Как определить и установить отсутствующее свойство среды в Maven? - PullRequest
10 голосов
/ 08 ноября 2011

У меня есть мои настройки сборки, так что я передаю свою переменную через командную строку:

mvn clean install -DsomeVariable=data

В моем pom у меня есть:

<someTag>${someVariable}</someTag>

Это прекрасно работает,но я хотел бы определить, не указано ли someVariable в командной строке, а затем установить его по умолчанию, чтобы мой сценарий мог продолжить.

Можно ли это сделать в Maven?

Ответы [ 3 ]

13 голосов
/ 08 ноября 2011

Вы можете указать значение свойства по умолчанию в разделе properties вашего файла POM:

<properties>
  <someVariable>myVariable</someVariable>
</properties>

Если вы хотите убедиться, что значение свойства ВСЕГДА указано в командной строке, то вы можете использовать maven -forcer-plugin.

Вот ссылка, показывающая, как обеспечить наличие системных свойств -> http://maven.apache.org/enforcer/enforcer-rules/requireProperty.html

Я просто скопирую здесь дословно XML на случай, если вышеприведенная ссылка испортится.

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.0.1</version>
        <executions>
          <execution>
            <id>enforce-property</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireProperty>
                  <property>basedir</property>
                  <message>You must have a basedir!</message>
                  <regex>\d</regex>
                  <regexMessage>You must have a digit in your baseDir!</regexMessage>
                </requireProperty>
                <requireProperty>
                  <property>project.version</property>
                  <message>"Project version must be specified."</message>
                  <regex>(\d|-SNAPSHOT)$</regex>
                  <regexMessage>"Project version must end in a number or -SNAPSHOT."</regexMessage>
                </requireProperty>
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>
7 голосов
/ 27 июня 2014

Вы можете указать значение по умолчанию как

<properties>
      <someTag>defaultValue</someTag>
</properties>

Когда вы запускаете команду maven, вы можете переопределить это значение следующим образом

mvn clean package -DsomeTag=newSpecificValue
2 голосов
/ 20 января 2012

Вместо этого вы можете использовать профили, но вам нужен профиль для каждого переменная.

 <profile>
    <id>default-value-1</id>
    <activation>
          <activeByDefault>false</activeByDefault>
          <property>
             <name>!someVariable</name>
          </property>
    </activation>
    <properties>
        <someVariable>DEFAULT-VALUE</someVariable>
    </properties>
</profile>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...