今天有人問我打包后找不到主類,運行的類寫在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插件時,有一些東西需要按照實際情況進行更改,比如主類入口,配置文件路徑