23

当 Maven 构建 JAR 文件时,它会将模块的 POM 文件放入其中(似乎在目录 <groupid>/<artifactid> 中)。

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

4

2 回答 2

25

和文件被打包在 JAR 中,因此 Maven 生成的每个工件都是自描述的,并且还允许您在需要时在自己的应用程序中使用元数据pom.xmlpom.properties一种简单的用途可能是检索应用程序的版本。

也就是说,如果需要,可以通过允许布尔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>

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

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

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

默认值是true。

这应该回答你的问题。

于 2009-11-05T03:18:39.310 回答
5

JAR 中的 pom.xml 旨在用于以下目的,

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

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

于 2009-11-05T02:54:36.767 回答