我使用很多方法来获得想法。但是,当我输入java -jar ****.jar
时,它告诉我no main manifest attribute, in quark-common.jar
这是我的项目的网址:https://github.com/ZYao123/JavaQuarkBBS
。该项目有5个模块。它们可以实现我的想法,但是当我想为Linux打包jar时,问题就出现了。
该模块取决于quark-parent
。quark-parent
仅具有一个pom.xml
用于公共软件包。
我已在pom.xml
的{{1}}上添加了此标签,但它们无法正常工作。
我知道它的发生是因为找不到主要方法,但是我应该如何解决呢?
quark-common
<parent>
<artifactId>quark-parent</artifactId>
<groupId>com.quark</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../quark-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.quark</groupId>
<artifactId>quark-common</artifactId>
<packaging>jar</packaging>
<build>
<finalName>quark-common</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.6.RELEASE</version>
</plugin>
</plugins>
</build>
答案 0 :(得分:0)
因此,我已经在本地构建了您的项目,并且在quark-common.jar
中进行了清单显示:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven 3.5.2
Built-By: ...
Build-Jdk: 10.0.2
它没有主类,也缺少其他属性。
原因是您不需要spring-boot-maven-plugin
的配置。应该是这样的:
. . .
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.6.RELEASE</version>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
. . .
结果MANIFEST.MF
类似于:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven 3.5.2
Built-By: ...
Build-Jdk: 10.0.2
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.quark.common.CommonApplication
Spring-Boot-Version: 1.5.6.RELEASE
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib
然后您使用java -jar quark-common-exec.jar
运行您的应用程序(它将创建扩展名为exec
的其他可执行工件)。
希望这会对您有所帮助。
更新
回答您的问题:
我想发生这种情况是因为您正在使用spring-boot-dependencies
bom(它提供了)。在您的其他项目中,您使用spring-boot-starter-parent
作为模块的父级。像这样:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
因此,它具有所有必需的插件配置。而spring-boot-dependencies
bom却没有,它只是提供了依赖项和插件的版本。