Maven POM是否可以并且应该指定它是否需要Maven 3或更高版本?

w8f9ii69  于 12个月前  发布在  Maven
关注(0)|答案(3)|浏览(140)

我目前正在清理使用Maven的Java项目,并使用NetBeans IDE来“调试"POM中的问题。我在IDE中将Maven 3.0.4设置为Maven版本,但其他开发人员或我们的持续集成系统可能会有不同的设置。
是否可以直接在POM中“强制”特定的Maven版本(例如通过使用Maven 3特定的元素)?

bnl4lu3b

bnl4lu3b1#

是的,你可以,你应该。一些Maven插件需要Maven 3或更高版本。
通过将以下内容添加到pom.xml来使用maven-enforcer-plugin:

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

字符串

fsi0uk1n

fsi0uk1n2#

另一种选择是在pom中使用premises元素,例如:

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

字符串
正如所指出的Michal Kalinowski's answer-这种简单的方法不太适合儿童项目。
有关哪种方法最适合您的摘要,请参阅此处:enforcing maven 3 - when to use maven enforcer plugin? when to use pom prerequisites element?

9wbgstp7

9wbgstp73#

你可以做的最好的事情是使用Enforcer插件。这里有一个例子:
http://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html
Maven本身没有现成的方法来做这件事。实际上有prerequisites标记,但它工作得不好,因为孩子不会继承它。

相关问题