Maven 不使用 maven jar 插件生成 MANIFEST 文件
Posted
技术标签:
【中文标题】Maven 不使用 maven jar 插件生成 MANIFEST 文件【英文标题】:Maven does not generate a MANIFEST file with maven jar plugin 【发布时间】:2017-10-04 10:05:39 【问题描述】:我尝试使用 maven(mvn 包)生成一个 .zip 文件,并希望在 zip 中也有一个 MANIFEST 文件。 jar 文件本身确实有效。 我尝试使用 maven jar 插件生成 MANIFEST 文件,但它不起作用。 我是否必须做其他事情才能获得 MANIFEST 文件,或者使用这个插件就足够了?父 pom(我展示的父级的父级)具有 maven 程序集插件。 (我对 Maven 完全陌生)
父pom的pom.xml文件:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
</pluginManagement>
</build>
模块的pom.xml文件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<mainClass>org.jis.Main</mainClass>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
【问题讨论】:
请参考这个答案:http://***.com/questions/2514429/creating-a-zip-archive-of-the-maven-target-directory 【参考方案1】:我有同样的问题,从 pom 文件中删除标签对我有帮助
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:我遇到了同样的问题,我突然无法从 CLI 运行 jar,删除 <pluginManagement>
标记为我创建了清单。
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案3】:在你的情况下,maven 必须被称为:
mvn clean package assembly:single
获得相同结果的另一种方法是修改你的 pom:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
然后运行:
mvn clean package
参考: https://maven.apache.org/plugins/maven-assembly-plugin/usage.html
【讨论】:
所以 maven jar 插件本身还不够?因为我的一个朋友没有组装插件,它对她来说工作得很好,而且她也不需要像我一样在父 pom 中指定一些东西。 (这是给学校的)。我到底需要什么程序集插件? (我试图理解所有这些不仅仅是复制代码) 所以 maven jar 插件本身还不够? > 是的,它本身还不够,因为它不能处理你的依赖,你必须以某种方式把它们放到你的类路径中。除了汇编插件之外,还有其他方法,例如。简单的依赖复制:mkyong.com/maven/how-to-create-a-jar-file-with-maven 如果在父pom中添加maven组装插件就够了吗?因为我们使用给定的父 pom,我查找了它并指定了 maven-assembly-plugin。 (顺便说一句,感谢您的帮助)以上是关于Maven 不使用 maven jar 插件生成 MANIFEST 文件的主要内容,如果未能解决你的问题,请参考以下文章