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,删除 &lt;pluginManagement&gt; 标记为我创建了清单。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请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 文件的主要内容,如果未能解决你的问题,请参考以下文章

maven打包时包含本地jar

使用maven插件构建docker镜像

Maven项目打Jar包,如何添加依赖

eclipse+maven生成excutive jar

如何使用不打包任何依赖项的 maven 程序集插件构建 jar?

doc.jar生成与查看