Maven放置在JAR文件中的POM文件的重要性是什么,它是否被任何东西使用?

Dan*_*yer 18 java maven-2 jar pom.xml

当Maven构建一个JAR文件时,它将模块的POM文件放在里面(似乎在目录<groupid>/<artifactid>中).

当我从Ant构建一个JAR文件以通过Maven Ant任务进行部署时,这个POM文件(JAR内部的文件)的存在是否重要?它似乎不是,但我只是想确保它没有在任何地方使用,并确认它应该在JAR文件中的确切位置.

Pas*_*ent 18

pom.xmlpom.properties文件打包在JAR以便由Maven的生产的每个工件是自描述的,也可以让你在使用自己的应用程序中的元数据,在需要时.一个简单的用途可能是检索应用程序的版本.

也就是说,如果需要,可以通过允许布尔addMavenDescriptor参数的MavenArchiverConfiguration停用包含这些文件,并且可以安全地不包含它们(即使我发现它很好).例如,对于JAR:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
          </archive>
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>
Run Code Online (Sandbox Code Playgroud)

关于这些文件的位置,addMavenDescriptor的文档说:

生成的存档是否包含这两个Maven文件:

  • pom文件,位于存档中 META-INF/maven/${groupId}/${artifactId}/pom.xml
  • 一个pom.properties文件,位于存档META-INF/maven/${groupId}/${artifactId}/pom.properties

默认值是true.

这应该回答你的问题.


ZZ *_*der 5

JAR 中的 pom.xml 设计用于以下目的,

  1. 自动依赖解析。
  2. JAR 的部署。可以自动从 JAR 中提取 pom.xml。
  3. 通过存储库进行完整性检查(JAR 匹配 POM)。

我不知道是否在任何地方实现了这些功能。你肯定可以忽略它。