【发布时间】:2019-09-14 21:52:55
【问题描述】:
我想用 maven 编译我的 Java 项目,但它没有将主类添加到清单文件中。所以我不能在intellij之外运行jar。我已将主类添加到我的 pom.xml 中,但它没有显示在清单文件中。
我在Win10机器和maven3(IntelliJ IDEA 2018.3.1/plugins/maven/lib/maven3)上使用intellij的构建功能。
如果我运行 jar,我会得到错误
$java -jar myJar.jar
kein Hauptmanifestattribut, in myJar.jar
(德语为:没有主清单属性,在 myJar.jar 中,我不知道确切的英文翻译,但这意味着:没有指定主类 )
我尝试了多个 maven 插件(maven-compile、maven-jar、maven-shade)和指定主类的方法,但没有一个将它添加到清单文件中。我让它工作的唯一方法是当我添加行时
Main-Class: Main
手工。
我的 pom 文件(是的,我的主类名为 Main,是的,当我手动添加它时它工作正常)
...
<groupId>com.myname</groupId>
<artifactId>myProject</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
...
清单文件
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: dspicuzz
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_65
如果我手动添加该行,它运行良好
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: dspicuzz
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_65
Main-Class: Main
但我无法让 maven 以这种方式为我生成它。
【问题讨论】:
-
如何生成 .jar 文件?你使用
Build > Build Artifacts还是Maven > ModuleName > jar > jar:jar?使用第一个我已经遇到了你的问题。 -
你使用什么 Maven 命令?我建议使用
mvn clean package。 -
当你转到 Maven 选项卡 -> your_project -> 生命周期并双击“包”时会发生什么?你看到 BUILD SUCCESS 和你的 jar 文件的位置了吗?
-
我用
Build > ... -
我让 intellij 为我做,所以我不能告诉你它使用的 wwitch maven 命令
标签: java maven intellij-idea pom.xml manifest