我需要将一个MainClass添加到由maven生成的jar中的manifest文件中。搜索SO和else-where显示了几个选项 - 其中2个是
方法1:添加到maven-compiler-plugin
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
<archive>
<manifest>
<mainClass>com.mypackage.myMainClass</mainClass>
<!--addClasspath>false</addClasspath-->
</manifest>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
方法2:使用maven-assembly-plugin
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>foo.bar.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
如果您检查,清单类配置/指令位于<archive>
标记下。
我的问题是为什么它在<archive>
标签下?我不明白标签的命名约定/相关性。我们在这里没有存档。
答案 0 :(得分:0)
<archive>
就创建某种工件而言,在你的情况下是一个jar文件。 JAR - Java ARchive
。 Maven Archiver主要用于插件来处理包装。并且您正在操纵包装过程,将数据添加到清单文件中,该文件将位于jar存档中。
答案 1 :(得分:0)
快速回答,因为maven-assembly-plugin的开发人员希望这样。 有一些解释: maven-assembly-plugin旨在从您的maven项目创建单个可分发的归档。因此输出称为存档。 “jar-with-dependencies”是这个插件的一个特殊描述符,用于构建可运行的jar(Java Archive)文件,并将所有依赖项打包到其中。对于插件,这仍然是一个存档。因此,当您想要将带有mainClass的清单添加到存档时,可以在归档变量中执行此操作。