1

次のMaven警告の考えられる原因は何ですか。

Overriding profile: 'null' (source: pom) with new instance from source: pom

警告に「プロファイル」と記載されているため、デフォルトのプロファイル全体をコメントアウトしようとしましたが、役に立ちませんでした。レポートオプションをコメントアウトしようとしましたが、警告が表示されます。

フラグを付けてMavenを実行しましたが-X、ハムクレストの依存関係が発生した直後に警告が表示されますが、コメントアウトしても警告が消えることはありません。

編集:リクエストごとの追加情報:

からの出力mvn help:active-profiles

Active Profiles for Project 'com.sophware.XXX:main:jar:0.0.1-SNAPSHOT':

The following profiles are active:

 - default (source: pom)

からの出力mvn help:all-profiles

[INFO] Listing Profiles for Project: com.sophware.XXX:main:jar:0.0.1-SNAPSHOT
  Profile Id: default (Active: true , Source: pom)

default確かに、私がpomで使用するプロファイルのIDです。現時点では、プロファイルは1つしかありませんが、将来さらに追加する予定です。

解像度:

ピーターはその問題について正しかった。idこの問題は、Mavenプロファイル内に要素がないことに起因します。私の場合、miglayoutの依存関係のために、pomファイルがプルされていました。

依存するpomを調べたところ、miglayoutは実際にidプロファイルで'を使用していないことがわかりました。

   <profile>
        <activation>
            <os>
                <family>windows</family>
                <arch>x86</arch>
            </os>
        </activation>
        <dependencies>
            <dependency>
                <groupId>org.eclipse.swt.win32.win32</groupId>
                <artifactId>x86</artifactId>
                <version>3.3.0-v3346</version>
                <optional>true</optional>
            </dependency>
        </dependencies>
    </profile>

他にもいくつかのプロファイルが欠落idしており、それぞれが警告を表示します。

4

1 に答える 1

4

これは、Maven 2.2.9 で簡単に再現できます。これの唯一の原因は、2 つの Maven プロファイルが同じ pom.xml で profile id 要素なしで定義されているため、id が null として扱われることです。そのようなプロファイルのユースケースが何であるかはわかりませんが、Maven 2.2.9 は、もちろんそれをオーバーライドしようとしない限り、そのようなプロファイルの存在を暗黙のうちに許可します - 前述の警告が表示されます。

エラーを再現する簡単な pom を次に示します。<id>各プロファイルの要素が欠落していることに注意してください。

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.apache.maven.its.mngxxxx</groupId>
  <artifactId>親</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>親</name>
  <プロファイル>
   <プロフィール>
      <活性化>
        <property><name>foo</name></property>
      </アクティベーション>
    </プロフィール>
    <プロフィール>
      <活性化>
        <property><name>foo</name></property>
      </アクティベーション>
    </プロフィール>
  </プロファイル>
</プロジェクト>

入力するだけmvn -X validate -Dfoo=trueで、出力の上部近くに警告メッセージが表示されます。これは、2 番目のプロファイル定義が最初のプロファイル定義をオーバーライドしようとすることが原因です。

この警告を発行する Maven 2 の関連コードは、DefaultProfileManager.javaの 123 行にあります。


Maven 3 では、これが変更されました。あなたが得る最新のmaven 3.0-alpha-6を使用してください。

[エラー] ビルドで 1 プロジェクトを読み取れませんでした -> [ヘルプ 1]
org.apache.maven.project.ProjectBuildingException: POM の処理中にいくつかの問題が発生しました:
[エラー] profiles.profile.id は一意である必要がありますが、id default @ org.apache.maven.its.mngxxxx:parent:1.0-SNAPSHOT, /Users/plynch/dev/apache/maven/core-integration- を持つ重複したプロファイルが見つかりましたテスト/mytests/mng-xxxx-IT/src/test/resources/mng-xxxx/pom.xml

 org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:285) で
 org.apache.maven.DefaultMaven.collectProjects (DefaultMaven.java:402) で
 org.apache.maven.DefaultMaven.getProjectsForMavenReactor (DefaultMaven.java:351) で
 org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:171) で
 org.apache.maven.DefaultMaven.execute (DefaultMaven.java:104) で
 org.apache.maven.cli.MavenCli.execute (MavenCli.java:422) で
 org.apache.maven.cli.MavenCli.doMain (MavenCli.java:157) で
 org.apache.maven.cli.MavenCli.main (MavenCli.java:122) で
 sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)
 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で
 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で
 java.lang.reflect.Method.invoke(Method.java:592) で
 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:290) で
 org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:230) で
 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:409) で
 org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:352) で
[エラー] プロジェクト org.apache.maven.its.mngxxxx:parent:1.0-SNAPSHOT (/Users/plynch/dev/apache/maven/core-integration-testing/mytests/mng-xxxx-IT/src/test/ resources/mng-xxxx/pom.xml) に 1 つのエラーがあります
[エラー] profiles.profile.id は一意である必要がありますが、ID がデフォルトの重複するプロファイルが見つかりました
[エラー]
[エラー]
[エラー] エラーと考えられる解決策の詳細については、次の記事をお読みください。
[エラー] [ヘルプ 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException

欠落<id>により、Maven 3 が「デフォルト」プロファイル ID を適用することにも注意してください。


最後に、マルチモジュール ビルドでは、親 pom が子のプロファイルと同じ ID を持つプロファイルを定義する場合、Maven から出力される警告やその他の指示はありません。

于 2010-01-13T16:57:12.207 に答える