使用maven如何将项目中的test代码打包进jar中
目录
- maven将项目的test代码打包进jar中
- 项目结构如下
- 需求
- 三步
- maven打包跳过test
- 在pom.xml文件中添加插件
- 使用mvn命令带附加参数
maven将项目的test代码打包进jar中
项目结构如下
…/src/main/java/package/** <– application code
…/src/test/java/package/** <– test code
需求
test中有一个包含main方法的主类TestMain.java,将main、test、全部依赖代码打包到一个jar包中,最终能通过java -jar的方式运行TestMain
这里Maven Jar Plugin 、 Maven Shade Plugin 都不是很适用。
我们选择Maven Assembly Plugin来打包
三步
1.在pom中添加如下:
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<configuration>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>com.sample.TestMain</mainClass>
</manifest>
</archive>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
<dependencies>
...
</dependencies>
</project>
2.在resources中添加一个assembly.xml文件
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<id>fat-tests</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<unpack>true</unpack>
<scope>test</scope>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${project.build.directory}/test-classes</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>**/*.class</include>
</includes>
<useDefaultExcludes>true</useDefaultExcludes>
</fileSet>
</fileSets>
</assembly>
3.运行mvn package
在target目录下会生成一个xxxxx-1.0-SNAPSHOT-assembly.jar的文件,这就是我们需要的jar包了。我们可以用压缩软件看到生成的这个jar包中包含了test中所有的测试类。
可以直接使用java -jar xxxxx-1.0-SNAPSHOT-assembly.jar来运行jar包。主类就是第一步中设置的那个类

maven打包跳过test
在pom.xml文件中添加插件
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.18.1</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin>
使用mvn命令 带附加参数
mvn install -Dmaven.test.skip=true
或者
mvn install -DskipTests
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
赞 (0)
