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

时间:2009-11-05 02:41:49

标签: java maven-2 jar pom.xml

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

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

2 个答案:

答案 0 :(得分:16)

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

也就是说,如果需要,可以通过MavenArchiverConfiguration停用包含这些文件,它允许布尔addMavenDescriptor参数并且不包含它们是安全的(即使我发现它很好拥有他们)。例如,对于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。

这应该回答你的问题。

答案 1 :(得分:3)

JAR中的pom.xml是为以下目的而设计的,

  1. 自动依赖关系解析。
  2. 部署JAR。可以自动从JAR中提取pom.xml。
  3. 按存储库进行完整性检查(JAR与POM匹配)。
  4. 我不知道是否在任何地方实现了这些功能。你可以肯定地忽略它。