2010-07-20 11 views
8

Sto usando due profili: sviluppo e produzione.Il plugin di rilascio di Maven ignora il releaseProfile

Lo sviluppo deve essere attivo su impostazione predefinita; la produzione dovrebbe essere usata quando sto rilasciando.

Nel mio pom.xml ho:

[...] 
<plugin> 
<artifactId>maven-release-plugin</artifactId> 
<version>2.0-beta-9</version> 
<configuration> 
    <useReleaseProfile>false</useReleaseProfile> 
    <goals>deploy</goals> 
    <arguments>-Pproduction</arguments> 
</configuration> 
</plugin> 
[...] 
<profiles> 
    <profile> 
    <id>production</id> 
    <properties> 
     <profile.name>production</profile.name> 
    </properties> 
    [...] 
    </profile> 
    <profile> 
    <id>development</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
    <properties> 
    <profile.name>development</profile.name> 
    </properties> 
     [...] 
    </profile> 
[...] 

Semplicemente non funziona.
useReleaseProfiles non funziona neanche: http://jira.codehaus.org/browse/MRELEASE-459

Il profilo di sviluppo dovrebbe essere sempre attivo, ma non durante l'esecuzione mvn release:perform. Come si ottiene questo?

[AGGIORNAMENTO]: Ho visto con il flag di debug che viene utilizzato il mio profilo di produzione, ma viene utilizzato anche il profilo di sviluppo, perché è activeByDefault. Questo non può essere ignorato dall'argomento releaseProfile. Sarebbe bello forzare il plugin di rilascio a utilizzare solo il profilo "produzione"..

risposta

13

Il maven-release-plugindocumentation incoraggia utilizzando il parametro di configurazione releaseProfiles per richiamare automaticamente i profili durante il processo di rilascio.

Questo è un approccio migliore rispetto al richiamo manuale dei profili di rilascio dalla riga di comando. Una ragione è perché i profili utilizzati nella versione verranno documentati nello pom.xml e memorizzati con il codice codificato. Ciò rende il processo di compilazione più facile da comprendere e più facile da ripetere in seguito, esattamente nello stesso modo in cui il progetto è stato originariamente pubblicato.

Se si utilizza maven-release-plugin precedente a 2.4, vedere questo bug impedire l'uso del parametro sopra indicato.

Si noti che nel caso di un progetto a più moduli è necessario inserire la configurazione "releaseProfiles" nel root pom! Vedi anche this issue per maggiori informazioni a riguardo.

+1

@editor, è meglio scrivere che il bug è stato corretto, qui, come commento. – Arun

+0

@Leif Grazie per l'aggiornamento su questa correzione di bug! – devdanke

+0

Anche con 2.5.1 devo ancora specificare manualmente il mio profilo '-Prelease' sulla CLI. –

2

Penso che dovresti semplicemente attivare i tuoi profili attraverso una proprietà.

<profiles> 
    <profile> 
    <id>production</id> 
    <activation> 
     <property> 
     <name>build</name> 
     <value>release</value> 
     </property> 
    </activation> 
    [...] 
    </profile> 
    <profile> 
    <id>development</id> 
    <activation> 
     <property> 
     <name>build</name> 
     <value>develop</value> 
     </property> 
    </activation> 
    [...] 
    </profile> 
<profiles> 

Fate il vostro costruisce eseguendo qualcosa di simile

mvn -Dbuild=develop package 
mvn -Dbuild=develop test 

mvn -Dbuild=release release:prepare 
mvn -Dbuild=release release:perform 
+0

Sì, ho fatto già sapere che è possibile impostare il profilo come questo. Ma in questo modo può essere dimenticato.Se lo dimentichi, il pacchetto rilasciato conterrebbe file di configurazione errati e la distribuzione fallirebbe. Vorrei applicare il plugin di rilascio per utilizzare solo il profilo specificato. – Janning

+0

Non può essere dimenticato se si definiscono alcune proprietà nei profili richiesti e utilizzati dal plugin di rilascio. – splash

+0

Non capisco il tuo ultimo commento. Potresti spiegarmelo per favore? – Janning

1

Se si seleziona "Introduction to Build Profiles", "Disattivazione di un profilo":

mvn groupId:artifactId:goal -P !profile-1,!profile-2 

Credo che si potrebbe usare questo per disattivare il vostro profilo predefinito?

0

Questo è un post molto vecchio ma mi sono imbattuto in questo problema abbastanza di recente. Il releaseProfile ha funzionato solo per me quando ho impostato il releaseProfiles sul profilo chiamato versione. Qualsiasi altro profilo dà lo stesso errore.

codice di esempio:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.5.3</version> 
      <configuration> 
       <tagNameFormat>@{project.artifactId}[email protected]{project.version}</tagNameFormat> 
       <autoVersionSubmodules>true</autoVersionSubmodules> 
       <releaseProfiles>release</releaseProfiles> 
       <allowTimestampedSnapshots>true</allowTimestampedSnapshots> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<profiles> 
    <profile> 
     <id>release</id> 
     <properties> 
      <connectionUrl>${scm-base}/tags/${project.artifactId}-${project.version}</connectionUrl> 
     </properties> 
    </profile> 
</profiles> 
Problemi correlati