2015-06-18 12 views
27

Si tratta di un frammento del mio pom.xml. Ho provato quanto segue, ma il profilo non è stato attivato.Maven: Come si attiva un profilo dalla riga di comando?

mvn clean install -Pdev1 
mvn clean install -P dev1 

Quando ho provato mvn help:active-profiles nessun profilo era elencato come attivo. Se ho impostato <activeByDefault> per dev1 a true, e corro mvn help:active-profiles, mi mostra il profilo viene attivato.

<profile> 
     <id>dev1</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <configuration> 
         <systemPropertyVariables> 
          <env>local</env> 
          <properties.file>src/test/resources/dev1.properties</properties.file> 
         </systemPropertyVariables> 
         <suiteXmlFiles> 
          <suiteXmlFile>src/test/resources/dev1.testng.xml</suiteXmlFile> 
         </suiteXmlFiles> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
    <profile> 
     <id>dev2</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <configuration> 
         <systemPropertyVariables> 
          <env>local</env> 
          <properties.file>src/test/resources/dev2.properties</properties.file> 
         </systemPropertyVariables> 
         <suiteXmlFiles> 
          <suiteXmlFile>src/test/resources/dev2.testng.xml</suiteXmlFile> 
         </suiteXmlFiles> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

Mi chiedo il motivo per cui il mio profilo non è sempre attivato. Qualcuno ha riscontrato problemi simili?

risposta

30

Non vedrete con

mvn help:active-profiles 

in quanto non v'è alcuna -Pdev1 nel comando.

vedreste con mvn help:active-profiles -Pdev1 (ma non, ovviamente, non ha senso in questo).

I comandi che hanno mostrato:

mvn clean install -Pdev1 
mvn clean install -P dev1 

siano corrette. Il problema non è probabilmente che il profilo non è attivato, ma piuttosto che non fa quello che ci si aspetta che.

Per assicurarsi questo è il caso, è possibile impostare activeByDefault a vero sul profilo, quindi lanciare mvn help:active-profiles per vedere che è effettivamente attivato, quindi lanciare mvn install e verificare se il profilo fa quello che ci si aspetta (che ancora una volta non è probabilmente il caso).

+0

sì, quando imposto activeByDefault su true, viene visualizzato in mvn help: active-profiles. Ma l'esecuzione di mvn clean install -Pdev1 non attiva il profilo. – indolent

7

Attivazione tramite le proprietà del sistema può essere fatto come segue

<activation> 
    <property> 
     <name>foo</name> 
     <value>bar</value> 
    </property> 
</activation> 

ed eseguire il mvn costruire con -D per impostare proprietà di sistema

mvn clean install -Dfoo=bar 

Questo metodo aiuta anche selezionare i profili in transitiva dipendenza del progetto artefatti.

1

Basta togliere la sezione di attivazione, non so il motivo per cui -Pdev1 non sovrascrive falsa attivazione di default. Ma se si omette questo:

<activation> <activeByDefault>false</activeByDefault> </activation>

allora il vostro profilo sarà attivato solo dopo la dichiarazione esplicita come -Pdev1

1

ho incontrato questo problema e ho risolto citato problema aggiungendo -DprofileIdEnabled=true parametro durante l'esecuzione mvn cli comando.

Si prega di eseguire il comando CLI mvn come: mvn clean install -Pdev1 -DprofileIdEnabled=true.

Oltre a questa soluzione, non è necessario rimuovere le impostazioni activeByDefault nel POM menzionato come risposta precedente.

Spero che questa risposta risolva il problema.