maven-2 - run - maven profiles java
Establecer los valores predeterminados para las propiedades personalizadas de Maven 2 (5)
Tengo un Maven pom.xml con un complemento que quiero controlar en la línea de comandos. Todo funciona de otra manera bien, excepto que incluso después de buscar en la red un tiempo no puedo encontrar la manera de establecer un valor predeterminado para mi propiedad de control:
<plugin>
...
<configuration>
<param>${myProperty}</param>
</configuration>
...
</plugin>
Entonces, si corro Maven con
mvn -DmyProperty=something ...
todo está bien, pero me gustaría tener un valor específico asignado a myProperty también sin el -DmyProperty=...
¿Cómo puede hacerse esto?
El enfoque de Taylor L funciona bien, pero no necesitas el perfil extra. Puede declarar valores de propiedad en el archivo POM.
<project>
...
<properties>
<!-- Sets the location that Apache Cargo will use to install containers when they are downloaded.
Executions of the plug-in should append the container name and version to this path.
E.g. apache-tomcat-5.5.20 -->
<cargo.container.install.dir>${user.home}/.m2/cargo/containers</cargo.container.install.dir>
</properties>
</project>
También puede establecer propiedades en su archivo de configuración de usuario.xml en el caso de que desee que cada usuario pueda establecer sus propios valores predeterminados. Utilizamos este enfoque para ocultar las credenciales que el servidor de CI utiliza para algunos complementos de desarrolladores habituales.
Esto podría funcionar para usted:
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugin>
<configuration>
<param>Foo</param>
</configuration>
</plugin>
</build>
...
</profile>
<profile>
<id>notdefault</id>
...
<build>
<plugin>
<configuration>
<param>${myProperty}</param>
</configuration>
</plugin>
</build>
...
</profile>
</profiles>
De esa manera,
mvn clean
usará "foo" como su parámetro predeterminado. En los casos en que necesite anular, use mvn -P notdefault -DmyProperty=something
La solución akostadinov funciona muy bien para el uso común ... Pero si la propiedad deseada debe ser utilizada por el componente del reactor durante la fase de resolución de dependencia (muy temprano en el proceso de jerarquía mvn pom ...) debe usar el mecanismo de prueba de perfil " ninguna activación " para asegurar el El valor proporcionado por la línea de comando opcional siempre se prioriza con respecto al valor provisto dentro de pom.xml. Y esto sea lo que sea profundo es tu jerarquía pom.
Para hacerlo, agregue este tipo de perfil en su pom.xml padre:
<profiles>
<profile>
<id>my.property</id>
<activation>
<property>
<name>!my.property</name>
</property>
</activation>
<properties>
<my.property>${an.other.property} or a_static_value</my.property>
</properties>
</profile>
</profiles>
Puedes usar algo como a continuación:
<profile>
<id>default</id>
<properties>
<env>default</env>
<myProperty>someValue</myProperty>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
Una vieja pregunta, pero creo que la respuesta más simple no está allí. Puede tener el valor predeterminado de la propiedad definido en <build>/<properties>
o en un perfil como se muestra a continuación. Cuando proporcione el valor de la propiedad en la línea de comando con -DmyProperty=anotherValue
, anulará la definición del POM. Espero haber podido explicar ...
<profile>
...
<properties>
<myProperty>defaultValue</myProperty>
</properties>
...
<configuration>
<param>${myProperty}</param>
</configuration>
...
</profile>