26

Maven ベースの Spring アプリを次のものでパッケージ化します。

mvn install-DskipTests -Peverything. 

そして、奇妙なことが起こります。生成された jar の META-INF で、重複する pom.xml および pom.properties ファイルを見つけます。誰かがそれを説明できますか?ありがとう。

ここに画像の説明を入力

これが抽出された 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

Apache Maven 3.0.4 (r1232337; 2012-01-17 15:44:56+0700) Maven ホーム: C:\apache-maven-3.0.4\bin.. Java バージョン: 1.6.0_30、ベンダー: Sun Microsystems Inc . Java ホーム: C:\Program Files (x86)\Java\jdk1.6.0_30\jre デフォルト ロケール: en_US、プラットフォーム エンコーディング: Cp1252 OS 名: "windows 7"、バージョン: "6.1"、アーキテクチャ: "x86"、家族:「窓」

4

6 に答える 6

18

追加

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

あなたのpom.xmlに

于 2012-11-14T07:19:03.840 に答える
15

これは、特にm2e-wtp統合との Eclipse での競合から生じるやや一般的な問題のようです。

一部の人々は、実行する目標のリストにcleanを含めることで修正できることを示していますmvn clean package

また、m2eインストールを更新して、複数のバージョンのm2eまたはm2eclipse (Indigo 以前のバージョン) がインストールされていないことを確認してください。

この問題に直面している他の人々への言及:

于 2012-04-25T07:40:36.413 に答える
7

I know this issue is a bit old, but I thought I'd share an obscure bit of information on this subject. I was running across the same issue, and I found that when I ran maven with Eclipse open, AND my workspace preferences were set to refresh the workspace using native hooks or polling, the extra pom.xml and pom.properties files were added by eclipse! Closing eclipse or removing the refresh workspace option solved the problem for me. This was a hard one to track down, so hopefully someone else will benefit from this.

于 2012-08-23T18:19:15.870 に答える
0

@Danの回避策をフォローアップしてください:

私はあなたの解決策を試しましたが、うまくいくようです-最初は赤面しました。しかし、それは最終的な失敗を遅らせるだけです。

ワークスペースが更新されるたびに、pom.xml および pom.properties ファイルが /classes ディレクトリに作成されます。その後、後の「パッケージ」ゴールには重複したファイルが .jar に含まれるため、その後の署名が中断されます。

ポーリングがオンの場合、「フェイルファスト」になります。オフの場合、将来のビルドで任意の時点で失敗する可能性があります。

于 2013-01-02T15:25:46.013 に答える
-5

何を意味するのかduplicateわかりませんが、maven によって作成された jarはフォルダーに付属しpom.xmlています。Maven 入門ガイドのこのセクションを参照してください。pom.propertiesMETA-INF

于 2012-04-25T04:27:30.643 に答える