Domanda

Quali sono le possibili cause del seguente avviso Maven:

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

Ho provato commentando il mio intero profilo predefinito come l'avvertimento menziona "profilo", ma che non ha aiutato. Ho anche provato a commentare le mie opzioni di reporting e l'avviso mostra ancora in su.

Ho ho fatto funzionare Maven con la bandiera -X e l'avviso si presenta subito dopo la mia dipendenza hamcrest viene portato in, ma commentando fuori non elimina l'avvertimento.

Modifica informazioni aggiuntive per ogni richiesta:

Output da 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)

Output da 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 è infatti l'id del profilo che uso nel mio pom. A questo punto, ho solo un profilo, anche se mi aspetto di aggiungere di più in futuro.

Risoluzione:

Peter aveva ragione sul problema. Il problema nasce dal non avere un elemento id all'interno di un profilo Maven. Nel mio caso, un file pom è stato tirato in causa della mia dipendenza miglayout.

Al momento guardando attraverso il dipendente pom del, ho scoperto che miglayout, infatti, non usa id di nei suoi profili:

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

C'è un certo numero di altri profili manca di id così come pure, ognuno dei quali causano l'avvertimento di essere presente.

È stato utile?

Soluzione

Questo è facile da riprodurre in Maven 2.2.9. L'unica causa di questo è due maven profili vengono definiti senza un elemento di profilo id nella stessa pom.xml, così i ids sono trattati nullo. Io non so quale sia il caso d'uso per un tale profilo è, ma Maven 2.2.9 permette silenziosamente un tale profilo di esistere, a meno che non si tenta di ignorarlo, naturalmente -. Si ottiene l'avvertimento citato

Ecco una semplice pom che riprodurre l'errore. Si noti l'elemento <id> mancante per ogni profilo.

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

È sufficiente digitare mvn -X validate -Dfoo=true e si dovrebbe vedere vicino alla parte superiore uscita il messaggio di avviso. Questo è causato dal secondo definizione del profilo cercando di ignorare la prima.

Il codice rilevante in Maven 2 che emette questo avviso è in DefaultProfileManager.java linea 123.


In Maven 3, questo è cambiato. Utilizzando le più recenti Maven 3.0-alfa-6 che si ottiene.

[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

Si noti inoltre che il <id> mancante causerà Maven 3 per applicare un 'default' profilo id.


Infine in una costruzione multi-modulo, se un genitore pom definire un profilo con lo stesso ID come uno nel bambino, non v'è alcun avviso o altra indicazione emessa da Maven.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top