2010-01-12 12 views
1

Quelles sont les causes possibles de l'avertissement Maven suivant:avertissement Maven « profil Redéfinition: « null » ... »

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

J'ai essayé de commenter mon ensemble du profil par défaut comme l'avertissement mentionne « le profil » , mais cela n'a pas aidé. J'ai également essayé de commenter mes options de rapport et l'avertissement apparaît toujours.

J'ai couru maven avec le drapeau -X et l'avertissement apparaît immédiatement après que ma dépendance de hamcrest soit apportée, mais le commentaire n'élimine pas l'avertissement.

EDIT: informations supplémentaires selon la demande:

sortie de 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) 

sortie de 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 est en effet l'id du profil que j'utilise dans mon pom. À ce stade, je n'ai qu'un seul profil, mais je m'attends à en ajouter d'autres à l'avenir.

Résolution:

Peter avait raison sur le problème. Le problème provient de ne pas avoir un élément id dans un profil maven. Dans mon cas, un fichier pom a été tiré en raison de ma dépendance miglayout.

En regardant à travers la je trouve que miglayout, en effet, de pom à charge, ne pas utiliser id « s dans ses profils:

<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> 

Il y a un certain nombre d'autres profils manquants id » s ainsi que le bien, chacun d'entre eux provoque l'avertissement d'être présent.

Répondre

4

Ceci est facile à reproduire dans Maven 2.2.9. La seule cause de ceci est que deux profils maven sont définis sans un élément d'identification de profil dans le même fichier pom.xml, donc les identifiants sont traités comme nuls. Je ne sais pas quel est le cas d'utilisation d'un tel profil, mais Maven 2.2.9 permet silencieusement qu'un tel profil existe, sauf si vous essayez de le contourner bien sûr - vous obtenez l'avertissement mentionné.

Voici un pom simple qui va reproduire l'erreur. Notez l'élément <id> manquant pour chaque profil.

 
<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> 

Tapez simplement mvn -X validate -Dfoo=true et vous devriez voir en haut de la sortie, le message d'avertissement. Cela est dû à la définition du second profil qui tente de remplacer le premier.

Le code correspondant dans Maven 2 qui émet cet avertissement est en DefaultProfileManager.java ligne 123.


Maven 3, cela a changé. En utilisant le dernier maven 3.0-alpha-6 vous obtenez.

 
[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 

Notez également que la <id> manquante Maven 3 à appliquer un identifiant de profil « par défaut ».


Enfin dans une construction à plusieurs modules, si un pom parent définir un profil avec le même identifiant que l'un chez l'enfant, il n'y a pas d'avertissement ou une autre indication émise par Maven.