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

Может и должен Maven POM указать, требуется ли Maven 3 или новее?

В настоящее время я делаю некоторую очистку проектов Java, которые используют Maven, и используют среду IDE NetBeans для "отладки" проблем в POM. Я установил Maven 3.0.4 в среду IDE как версию Maven, но другие разработчики или наша система непрерывной интеграции могут иметь разные настройки.

Возможно ли "принудительно применять" конкретную версию Maven непосредственно в POM (например, с помощью определенного элемента Maven 3)?

4b9b3361

Ответ 1

Да, вы можете и должны. Некоторые плагины Maven требуют Maven 3 или новее.

Используйте плагин maven-enforcer, добавив следующее к вашему pom.xml:

<build>
  <plugins>
    <plugin>
      <inherited>true</inherited>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-enforcer-plugin</artifactId>
      <version>1.3.1</version>
        <executions>
          <execution>
            <id>enforce-maven-3</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>3.0.5</version>
                </requireMavenVersion>                
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
       </executions>
     </plugin>
  </plugins>
</build>

Ответ 2

Другим вариантом является использование элемента предварительных условий в pom, например:

<project>
   ...
   <prerequisites>
       <maven>3.0.0</maven>
   </prerequisites>
   ...
</project>

Как отмечено ответ Михала Калиновского - этот простой подход не так хорошо работает для детских проектов.

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

Ответ 3

Лучшее, что вы можете сделать, это использовать плагин Enforcer. Вот пример:
http://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html

В Maven для этого не существует метода "вне коробки". Фактически существует тег prerequisites, но он не работает хорошо, потому что дети не наследуют его.