pom.xml中需要两个maven版本 - 怎么办?

时间:2016-06-07 18:45:58

标签: java maven

我正在尝试使用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版本?

1 个答案:

答案 0 :(得分:2)

根据Maven的Version Range Specification文档,这是指定范围,而不是特定版本。 (,3.2)表示低于3.2版的任何内容,因此这两个配置是兼容的:例如,使用版本3.1。

pom文件中的注释强化了这一点,它说版本3.2.x和3.3.x会导致错误,所以不要使用它们。

另见