maven打包springboot多模块项⽬提⽰没有主清单⽂件
项⽬打包为Jar后,通过java -jar xxxxx.jar运⾏时提⽰xxxxx.jar中没有主清单属性,如下:
打开jar包,META-INF⽬录下的MANIFEST.MF,内容如下:
1. Manifest-Version: 1.0
2. Archiver-Version: Plexus Archiver
3. Built-By: greedystar
4. Created-By: Apache Maven 3.2.5
5. Build-Jdk: 1.8.0_181
我们发现这⾥没有主类等信息,是什么原因导致的呢?⽹上⼤多数资料指出需要在l中配置maven插件,如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
这种解决⽅案通常可以解决⼤部分问题,但这种⽅案只在使⽤ spring-boot-starter-parent 为 <parent/> 标签内容时才有效,当我们使⽤⾃定义的<parent/>节点时按如上所述的⽅式配置maven插件则是⽆效的,这是为什么呢?让我们⼀起看⼀看 spring-boot-starter-parent 中的配置。
spring-boot-starter-parent 中maven插件的配置如下:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>${start-class}</mainClass>
</configuration>
</plugin>
我们可以看到这⾥配置了主类信息以及⼀个重要的标签<goal>,对repackage的描述如下:
Repackages existing JAR and WAR archives so that they can be executed from the command line using java -jar.
看到这⾥我们就清楚了,当使⽤⾃定义的 parent 时,我们需要⾃⾏配置maven插件的<goal>属性,如下:
<build>
<plugins>
maven打包本地jar包<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
或者指定
mainClass,如下:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.0.RELEASE</version>
<configuration>
<mainClass&star.api.MetaxApiApplication</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
指定mvn clean package指令打包jar包后看⼀下清单⽂件,内容如下:
1. Manifest-Version: 1.0
2. Archiver-Version: Plexus Archiver
3. Built-By: greedystar
4. Start-Class: cn.bimart.server.TxServerApplication
5. Spring-Boot-Classes: BOOT-INF/classes/
6. Spring-Boot-Lib: BOOT-INF/lib/
7. Spring-Boot-Version: 2.1.1.RELEASE
8. Created-By: Apache Maven 3.2.5
9. Build-Jdk: 1.8.0_181
10. Main-Class: org.springframework.boot.loader.JarLauncher
这样项⽬就打包成功了,通过java -jar也可以正确运⾏了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论