Maven 경고“프로필을 우선시 : 'NULL'…”
문제
다음 Maven 경고의 가능한 원인은 무엇입니까?
Overriding profile: 'null' (source: pom) with new instance from source: pom
경고가 "프로필"을 언급하면서 전체 기본 프로필을 언급하려고 시도했지만 도움이되지 않았습니다. 또한보고 옵션을 언급하려고 시도했지만 경고가 여전히 나타납니다.
나는 Maven과 함께 달렸다 -X
깃발과 경고는 내 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입니다. 이 시점에서 나는 앞으로 더 많은 것을 추가 할 것으로 기대하지만 하나의 프로필 만 가지고 있습니다.
해결:
베드로는 문제에 대해 옳았습니다. 문제는 id
Maven 프로파일 내의 요소. 제 경우에는 Miglayout 종속성으로 인해 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.2.9에서 쉽게 재현 할 수 있습니다. 이것의 유일한 원인은 두 개의 maven 프로파일이 동일한 pom.xml에서 프로파일 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에서 방출 된 경고 나 기타 표시가 없습니다.