以下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中使用的配置文件的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
以及每个配置文件都会导致警告出现。
答案 0 :(得分:4)
这很容易在Maven 2.2.9中重现。造成这种情况的唯一原因是在同一个pom.xml中定义了两个maven配置文件而没有配置文件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>parent</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <name>parent</name> <profiles> <profile> <activation> <property><name>foo</name></property> </activation> </profile> <profile> <activation> <property><name>foo</name></property> </activation> </profile> </profiles> </project>
只需输入mvn -X validate -Dfoo=true
,您就会在输出顶部附近看到警告消息。这是由于第二个配置文件定义试图覆盖第一个。
发出此警告的Maven 2中的相关代码位于DefaultProfileManager.java第123行。
在Maven 3中,这已经改变了。使用最新的maven 3.0-alpha-6。
[ERROR] The build could not read 1 project -> [Help 1] org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs: [ERROR] profiles.profile.id must be unique but found duplicate profile with id default @ 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 at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:285) at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:402) at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:351) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:171) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:104) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:422) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:157) at org.apache.maven.cli.MavenCli.main(MavenCli.java:122) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) [ERROR] The project 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) has 1 error [ERROR] profiles.profile.id must be unique but found duplicate profile with id default [ERROR] [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
另请注意,缺少的<id>
会导致Maven 3应用“默认”个人资料ID。
最后,在多模块构建中,如果父pom定义了与子节点中id相同的配置文件,则Maven不会发出警告或其他指示。