打包可執行jar檔案,沒有主清單屬性,部分依賴沒有打包。

姚棋發表於2020-12-23

專案場景:

對完成的java專案使用maven進行打包,並打包成可執行jar檔案。

問題描述:

mvn clean compile  
mvn clean package
java -jar xxx.jar

執行jar包時出現沒有

  • -SNAPSHOT.jar中沒有主清單屬性
  • resource資料夾的包沒有匯入

解決方法需要對專案中的配置檔案進行改動。


解決方案:

主清單屬性是指可執行jar包中的main函式,如果要執行jar包需要指明一個執行的入口,需要改動pom.xml。
新增:

<plugins>
	   <plugin>
	        <artifactId>maven-assembly-plugin</artifactId>
	        <version>2.4</version>
	        <configuration>
	            <descriptorRefs>
	                <descriptorRef>jar-with-dependencies</descriptorRef>
	            </descriptorRefs>
	            <archive>
	                <manifest>
                       <mainClass>com.noteligible.pojo.main</mainClass>
                  </manifest>
                 </archive>
             </configuration>
             <executions>
                 <execution>
                     <id>make-assembly</id>
                     <phase>package</phase>
                     <goals>
                         <goal>single</goal>
                     </goals>
                 </execution>
             </executions>
         </plugin>

其中mainClass指的是main函式的函式位置。


maven似乎預設不打包resource資料夾中的jar包,需要再pom.xml中新增:

<resource>
   <directory>src/main/resources</directory>
    <includes>
        <include>**/*.properties</include>
        <include>**/*.xml</include>
    </includes>
</resource>

directory>指明瞭需要打包的目錄路徑。

相關文章