【问题标题】:Maven warning "Overriding profile: 'null'..."Maven 警告“覆盖配置文件:'null'...”
【发布时间】:2011-01-04 09:53:20
【问题描述】:

以下maven警告的可能原因是什么:

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

我尝试将我的整个默认配置文件注释掉,因为警告中提到了“配置文件”,但这并没有帮助。我还尝试注释掉我的报告选项,但警告仍然出现。

我已经使用-X 标志运行了 maven,并且在引入我的 hamcrest 依赖项后立即显示警告,但将其注释掉并不能消除警告。

编辑:每个请求的附加信息:

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.xml 中使用的配置文件的 ID。目前,我只有一个个人资料,但我希望将来会添加更多。

分辨率:

彼得在这个问题上是对的。问题源于 maven 配置文件中没有 id 元素。就我而言,由于我的 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,每个配置文件都会导致出现警告。

【问题讨论】:

    标签: maven-2 warnings profile pom.xml


    【解决方案1】:

    这很容易在 Maven 2.2.9 中重现。造成这种情况的唯一原因是在同一个 pom.xml 中定义了两个没有配置文件 id 元素的 maven 配置文件,因此这些 id 被视为 null。我不知道此类配置文件的用例是什么,但 Maven 2.2.9 默默地允许此类配置文件存在,除非您当然尝试覆盖它 - 您会收到上述警告。

    这是一个简单的 pom,可以重现错误。请注意每个配置文件缺少的 &lt;id&gt; 元素。

    4.0.0org.apache.maven.its.mnggxxx父级1.0-SNAPSHOTpom包装> 父母foo激活> foo激活> 项目>

    只需键入mvn -X validate -Dfoo=true,您应该会在输出顶部附近看到警告消息。这是由于第二个配置文件定义试图覆盖第一个。

    Maven 2 中发出此警告的相关代码位于 DefaultProfileManager.java 第 123 行。


    在 Maven 3 中,这种情况发生了变化。使用你得到的最新的 maven 3.0-alpha-6。

    [错误] 构建无法读取 1 个项目 -> [帮助 1] org.apache.maven.project.ProjectBuildingException:处理 POM 时遇到了一些问题: [错误]profiles.profile.id 必须是唯一的,但发现重复配置文件的 id 默认为 @ 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(Native Method) 在 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/资源/mng-xxxx/pom.xml) 有 1 个错误 [错误]profiles.profile.id 必须是唯一的,但发现重复的配置文件,id 为默认值 [错误] [错误] [错误] 有关错误和可能的解决方案的更多信息,请阅读以下文章: [错误] [帮助 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException

    另请注意,缺少 &lt;id&gt; 将导致 Maven 3 应用“默认”配置文件 ID。


    最后在多模块构建中,如果父 pom 定义了一个与子 pom 具有相同 id 的配置文件,则 Maven 不会发出警告或其他指示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-11
      • 2012-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 2018-12-10
      • 2011-05-30
      相关资源
      最近更新 更多