我正在尝试使用mvn clean install
构建JavaOCR项目。 maven-enforcer-plugin
中使用了pom.xml
,并且有两个必需的Maven版本。 (或许我误解了一些事情)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<!--different rules for different issues-->
<!--3.3.x causes `java.lang.NoClassDefFoundError: org/eclipse/aether/spi/connector/Transfer$State` which is caused by certain maven versions, see https://cwiki.apache.org/confluence/display/MAVEN/AetherClassNotFound for details-->
<version>(,3.3)</version>
<!--3.2.x causes `No implementation for org.eclipse.aether.connector.wagon.WagonConfigurator was bound.`-->
<version>(,3.2)</version>
</requireMavenVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
目前我已经安装了maven 3.3.3并且它抛出java.lang.NoClassDefFoundError
错误(与pom.xml
中的注释中描述的相同),因此我无法构建它。
我的问题是我应该使用什么版本来成功构建项目?是否可以同时使用两个maven版本?
答案 0 :(得分:2)
根据Maven的Version Range Specification文档,这是指定范围,而不是特定版本。 (,3.2)
表示低于3.2版的任何内容,因此这两个配置是兼容的:例如,使用版本3.1。
pom文件中的注释强化了这一点,它说版本3.2.x和3.3.x会导致错误,所以不要使用它们。