2009-11-05 52 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匹配)。

我不知道這些功能是否在任何地方實現。你可以肯定地忽略它。

相關問題