Как проверить, существует ли переменная среды в моем pom.xml?

Если кто-то запускает мой pom.xml, он получает неприятную ошибку, потому что переменная среды не определена. Я хотел бы уловить это и показать более простую ошибку, чтобы проблему можно было легко исправить, определив переменную среды. Я знаю, что, вероятно, не очень хорошая идея иметь переменную окружения в pom, но на этот раз мне действительно нужно. Какие-нибудь подсказки?


Переменная - JAVA_6_HOME, путь к JDK6, так как по умолчанию я использую JDK7.


person JohnPristine    schedule 10.08.2013    source источник
comment
Не могли бы вы подробнее рассказать, что это за переменная и зачем она вам нужна? Кто-то может найти альтернативный метод.   -  person chrylis -cautiouslyoptimistic-    schedule 10.08.2013


Ответы (2)


Maven-enforcer-plugin может это сделать:

<build>
   <plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.3.1</version>
        <executions>
           <execution>  
              <id>enforce-property</id>
              <goals>
                 <goal>enforce</goal>
              </goals>
              <configuration>
                 <rules>
                   <requireEnvironmentVariable>
                      <variableName>JAVA_6_HOME</variableName>
                      <message>JAVA_6_HOME system variable must be set!</message>
                   </requireEnvironmentVariable>
                 </rules>
                 <fail>true</fail>
              </configuration>
           </execution>
        </executions>
     </plugin>
  </plugins>
</build>
person Jk1    schedule 10.08.2013
comment
Отличный приятель. Вы знаете, как я добавляю пустую строку в сообщение об ошибке, чтобы она выделялась в выводе maven? - person JohnPristine; 10.08.2013
comment
Ага. Используйте разделители в своем сообщении: ‹message› $ {line.separator} Необходимо установить системную переменную JAVA_6_HOME! $ {Line.separator} ‹/message› - person Jk1; 10.08.2013

Вы можете указать правило, в котором указано, что свойство является обязательным. Отметьте этот вопрос SO Могу ли я заставить Maven 2 требовать указания свойства в командной строке? и это ссылка на спецификацию maven http://maven.apache.org/enforcer/enforcer-rules/requireProperty.html

Вот ссылка на все доступные правила: http://maven.apache.org/enforcer/enforcer-rules/index.html

person Boris Remus    schedule 10.08.2013
comment
Потрясающий Борис. Последний вопрос: знаете ли вы, как я вставляю пустые строки до и после сообщения об ошибке? Они теряются посреди моего вывода maven. - person JohnPristine; 10.08.2013