2012-04-25 99 views
21

我打包我的基於Maven的春季應用與產生重複的pom.xml和pom.properties文件。在生成的jar的META-INF中,我找到了重複的pom.xml和pom.properties文件。有人可以解釋嗎?謝謝。的Maven在一個罐子裏

enter image description here

在這裏被提取的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.abc.xyz</groupId> 
<artifactId>migrate-app</artifactId> 
<packaging>jar</packaging> 
<version>1.0-SNAPSHOT</version> 
<name>migrate-app</name> 
<url>http://maven.apache.org</url> 
<dependencies> 

.. 

</dependencies> 

<profiles> 
    <profile> 
    <id>everything</id> 
    <build> 
     <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.5</source> 
      <target>1.5</target>   
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.5</version> 
     <configuration> 
      <skipTests>true</skipTests> 
     </configuration> 
     </plugin>    
     </plugins> 
    </build> 
    </profile> 
    </profiles> 

輸出用於命令:

mvn -version 

阿帕奇的Maven 3.0.4(r1232337; 2012-01-17 15: 44:56 + 0700) Maven home:C:\ apache-maven-3.0.4 \ bin .. Java版本:1.6.0_30,供應商:S un Microsystems Inc. Java主頁:C:\ Program Files(x86)\ Java \ jdk1.6.0_30 \ jre 默認語言環境:en_US,平臺編碼:Cp1252 操作系統名稱:「windows 7」,版本:「6.1」,弓:「86」,家人:「窗口」

+0

您可以在這裏寫下「mvn -version」的輸出嗎? – 2012-04-25 04:31:03

+0

我已經添加了輸出。 – bnguyen82 2012-04-25 04:49:40

+0

謝謝。我也會搜索它。我在這裏運行mvn版本3,並且具有相同的行爲。 jar內的雙文件。 – 2012-04-25 05:23:32

回答

-5

不知道你的duplicate的意思,但由行家創建的JAR中META-INF文件夾來與pom.xmlpom.properties不會。請參閱maven入門指南的this section

+0

我的意思是有兩個pom.xml文件和兩個pom.properties文件。 – bnguyen82 2012-04-25 04:51:26

+0

Jar壓縮文件基於ZIP格式(實際上,您可以使用ZIP實用程序來操作jar壓縮文件),它允許在壓縮文件中重複輸入。提取過程中簡單地覆蓋具有相同名稱的條目。當您檢查用Eclipse/m2e組合構建的jar文件時,您會看到所提及文件的字面重複條目。真正煩人的是,這打破了jar cmdline工具(你不能更新任何文件) – 2013-10-11 15:26:52

13

看來這是一個由Eclipse中的衝突引起的某種常見問題,特別是與集成的衝突。

有些人表示可以通過在要運行的目標列表中包括clean來解決該問題。 mvn clean package

也可以嘗試更新您的M2E安裝,並確保你沒有安裝M2Em2eclipse的(預靛藍版本)多個版本。

+0

我打開http://jira.codehaus.org/browse/MSHARED-324來跟蹤maven-archiver插件上的問題。任何有興趣在Maven中看到修復的人都應該投票支持它。 – 2014-03-10 10:55:09

+0

我剛剛解決了這個問題,因爲它是由Maven JAR Plugin 2.6隱式修復的。 – 2015-12-31 21:40:19

6

我知道這個問題是有點老了,但我認爲:

來面臨這個問題其他人一些參考我會分享一些關於這個問題的隱晦信息。我遇到了同樣的問題,我發現當我用Eclipse打開maven時,我的工作空間首選項被設置爲使用本地鉤子或輪詢來刷新工作空間,額外的pom.xml和pom.properties文件通過eclipse添加!關閉日食或刪除刷新工作區選項解決了我的問題。這是一個難以追查的問題,所以希望別人能夠從中受益。

14

添加

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-jar-plugin</artifactId> 
     <configuration> 
     <archive> 
      <addMavenDescriptor>false</addMavenDescriptor> 
     </archive> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 

到你的pom.xml

+0

這對我有用。但是,你能解釋爲什麼嗎? – spoulson 2013-01-30 14:31:21

+0

Maven build將maven文件添加到META-INF文件夾中。如果你正在開發一個applet或類似的項目,這是一個問題。當false時,addMavenDescriptor屬性從jar中排除maven文件。 – besc 2013-01-31 15:00:30

+0

剛剛遇到包含小程序的項目的這個錯誤。這顯然與m2e有關。我終於刪除了似乎是該bug的唯一解決方案的maven描述符...... - 謝謝 – Rob 2014-07-03 09:39:26

0

各地跟進到@丹的工作:

我想你的解決方案,它出現工作 - 乍一看。但是,這只是推遲了最終的失敗。

在任何時候刷新工作空間時,都會出現在/ classes目錄中創建pom.xml和pom.properties文件。之後,任何後來的「包」目標將包括.jar中的重複文件,並因此破壞以後的任何簽名。

如果輪詢開啓 - 您「失敗 - 快速」。如果它關閉,你可以在任意時間在未來的版本中失敗。