C'è un modo per definire i miei profili Maven al di fuori del file POM ma non in .m2/settings.xml?
voglio definire loro in un XML separato file di all'interno l'applicazione (modo di lavorare in modo efficiente con Maven 2 e 3) perché sto usando Maven 2 e intendo passare a 3 presto.Definire i profili Maven fuori POM
risposta
Fino a Maven 2.2.1 è possibile definire i profili nel file profiles.xml come file separato ma con Maven 3 questa opportunità è stata rimossa. La domanda è perché hai bisogno di un file separato per i profili?
Si consiglia di passare attraverso this maven documentation sui profili di generazione, che descrive i tipi di profili e come ciascuno può essere utilizzato.
Come ho visto, i profili non possono essere definiti al di fuori di pom.xml
o settings.xml
, se si desidera utilizzare maven 3
.
Stavo migrando di recente un'applicazione a maven3 da maven2. Con Maven 3 non è possibile avere profili esterni. Ma ciò che si può fare è avere file di proprietà esterni. Ciò può essere ottenuto da Maven-proprietà-plugin
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<!-- Associate the read-project-properties goal with the initialize phase,
to read the properties file. -->
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>../com.tak/build.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
Così qui mi hanno spiegato come fare http://programtalk.com/java/migrate-from-maven2x-to-maven3x/
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<build.profile.id>dev</build.profile.id>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<build.profile.id>prod</build.profile.id>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<build.profile.id>test</build.profile.id>
</properties>
</profile>
</profiles>
e aggiungere un filtro
<filters>
<filter>src/test/resources/${build.profile.id}/config.properties</filter>
</filters>
e aggiungere qualsiasi directory (dev, prod, test)
perché ho molti profili e ogni profilo contiene molte proprietà e il file pom sta diventando così grande –
Che dire dell'utilizzo di un super-pom che contiene i profili, supponendo che si applicherebbero a diversi tipi di progetto? I tuoi poms di progetto possono quindi utilizzare quel genitore principale senza dover ridefinire tutto questo comportamento comune. – RonU
url per tale approccio per favore in una risposta separata sarebbe preferibile? –