今天有人问我打包后找不到主类,运行的类写在test中.按照常规,test目录下的文件不会打包到jar包中.(但是我测试一个springboot工程就可以,这里之后再研究)
具体解决如下
第一步:在pom文件中引入Maven Assembly Plugin插件 (注意:如果含有其他打包插件,最好先排除掉干扰)
1 <plugin> 2 <artifactId>maven-assembly-plugin</artifactId> 3 <version>2.3</version> 4 <configuration> 5 <descriptor>src/main/resources/assembly.xml</descriptor> 6 </configuration> 7 <executions> 8 <execution> 9 <id>make-assembly</id> 10 <phase>package</phase> 11 <goals> 12 <goal>single</goal> 13 </goals> 14 <configuration> 15 <archive> 16 <manifest> 17 <mainClass>com.lingzhi.jedis.JedisTest</mainClass> 18 </manifest> 19 </archive> 20 </configuration> 21 </execution> 22 </executions> 23 </plugin> 24 25 </plugins> 26 </build>
第二步:在resources目录下创建插件的配置文件,这里名称为assembly.xml
1 <assembly
2 xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
5 <id>fat-tests</id>
6 <formats>
7 <format>jar</format>
8 </formats>
9 <includeBaseDirectory>false</includeBaseDirectory>
10 <dependencySets>
11 <dependencySet>
12 <outputDirectory>/</outputDirectory>
13 <useProjectArtifact>true</useProjectArtifact>
14 <unpack>true</unpack>
15 <scope>test</scope>
16 </dependencySet>
17 </dependencySets>
18 <fileSets>
19 <fileSet>
20 <directory>${project.build.directory}/test-classes</directory>
21 <outputDirectory>/</outputDirectory>
22 <includes>
23 <include>**/*.class</include>
24 </includes>
25 <useDefaultExcludes>true</useDefaultExcludes>
26 </fileSet>
27 </fileSets>
28 </assembly>
第三步,maven 打包

结果如上图,有两个jar包,其中下面这个就是包括test的,上面是默认情况
在配置文件中引入assembly插件时,有一些东西需要按照实际情况进行更改,比如主类入口,配置文件路径

打包并测试
执行maven命令:
mvn clean compile test-compile assembly:single
运行jar包:
java -jar test-1.0-assembly.jar

浙公网安备 33010602011771号