Подтвердить что ты не робот

Как определить условные свойства в maven?

Например, я хотел бы иметь свойство Configuration, установленное в ${env:AAA}, если есть переменная среды AAA и какое-то другое постоянное значение, если нет такой переменной среды.

Как мне это сделать в maven 2?

4b9b3361

Ответ 1

Кажется, вы активируете профиль условно...

<profiles>
  <profile>
    <activation>
      <property>
        <name>environment</name>
        <value>test</value>
      </property>
    </activation>
    ...
  </profile>
</profiles>

Профиль будет активирован, если переменная среды будет определена как значение test, как в следующей команде:

mvn ... -Denvironment=test

Ответ 2

В случае, если системное свойство является приемлемым, вы можете просто определить свойство в своем POM файле и переопределить его при необходимости:

<project>
...
  <properties>
     <foo.bar>hello</foo.bar>
  </properties>
...
</project>

Вы можете ссылаться на это свойство в другом месте вашего POM, обращаясь к ${foo.bar}. Чтобы переопределить в командной строке, просто передайте новое значение:

mvn -Dfoo.bar=goodbye ...

Ответ 3

Вы можете установить свойство условно, используя maven-antrun-plugin. Пример установки install.path + повторение значения:

<plugin>
    <!-- Workaround maven not being able to set a property conditionally based on environment variable -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <exportAntProperties>true</exportAntProperties>
                <target>
                    <property environment="env"/>
                    <condition property="install.path" value="${env.INSTALL_HOME}" else="C:\default-install-home">
                        <isset property="env.INSTALL_HOME" />
                    </condition>
                    <echo message="${install.path}"/>
                </target>
            </configuration>
        </execution>
    </executions>
</plugin>