2009-11-05 49 views
13

当Maven构建JAR文件时,它将模块的POM文件放在里面(看起来在目录<groupid>/<artifactid>)。Maven在JAR文件中放置的POM文件的重要性是什么?

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

回答

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
  • A pom.properties文件,位于档案中META-INF/maven/${groupId}/${artifactId}/pom.properties

默认值为true。

这应该回答你的问题。

+0

“将pom.xml和pom.properties文件打包在JAR中,以便Maven生成的每个工件都是自描述的,并且还允许您在需要时使用自己的应用程序中的元数据” - 可以你给我举例说明为什么我的应用程序需要在pom文件中的元数据? – 2013-03-09 10:50:31

3

内JAR pom.xml中被设计用于以下用途,

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

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

相关问题