maven - mvn 依赖 :go-offline doesn't download the requirements for maven-surefire-plugin

标签 maven maven-surefire-plugin maven-dependency-plugin

我正在尝试在 docker 中构建一个开源项目并希望节省花费在构建上的时间,所以我尝试使用 mvn dependency:go-offline可以 下载 maven-surefire-plugin 本身。

之后运行 mvn -o clean package 会产生

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M4:test (default-test) on project oxalis-api: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M4:test failed: Plugin org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M4 or one of its dependencies could not be resolved: Cannot access apache.snapshots (http://repository.apache.org/snapshots/) in offline mode and the artifact org.codehaus.plexus:plexus-utils:jar:1.1 has not been downloaded from it before. -> [Help 1]

(我启用了快照存储库,因为 maven-dependency-plugin 在多模块项目中存在严重问题)

POM包括

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>3.0.0-M4</version>
                    <configuration>
                        <useSystemClassLoader>false</useSystemClassLoader>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

并且如上所述,在下线后,该插件本身确实存在于我的存储库中。

最佳答案

看来你的maven本地仓库使用了legacy结构,详情here .所以目标dependency:go-offline在legacy模式下准备了repository,那么构建package的实际目标是找不到依赖的,因为它使用的是default模式。

因此对于您的特定场景,您可以使用以下命令以批处理方式下载依赖项和插件:

mvn dependency:resolve-plugins dependency:go-offline -B 

您可以使用以下方式进行构建,包括离线、批处理和遗留本地存储库选项:

mvn package -o -llr -B

提示:如果您在构建中需要在主 pom 中未明确定义的其他插件或依赖项,例如您在构建过程中添加的插件或依赖项(即 clover、allure、pact 等),您可以使用以下方法预下载命令:

mvn dependency:get -Dartifact=org.openclover:clover-maven-plugin:4.4.1 -B

提示 2:如果您在离线时遇到问题并且没有获取依赖项,可能是因为您在下载依赖项和构建项目时有不同的 maven 设置。可以考虑删除本地仓库里面的maven-metadata*.xml_*.repositories,可以这样用:

find ~/.m2/repository -name 'maven-metadata*.xml' | xargs -n1 rm
find ~/.m2/repository -name '_*.repositories' | xargs -n1 rm

关于maven - mvn 依赖 :go-offline doesn't download the requirements for maven-surefire-plugin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58972874/

相关文章:

maven - 为什么Maven在构建过程中不复制属性文件?

maven - 找不到处理执行的市场条目

java - 使用 url 而不是文件添加系统 maven 依赖项

maven-surefire-plugin 忽略 pom.xml 中的插件顺序

java - 在 Tomcat 上的 Java EE Maven 项目中设置 JavaAgent

java - Maven 中的可运行 jar 以及如何使用依赖项和 list

java - Maven Surefire 无法在 Jenkins 上实例化我的 IReporter 类

java - maven-dependency-plugin 不能排除测试范围依赖

maven - 如何使用目标 unpack-dependency 解压 maven-dependency-plugin 中子文件夹中的文件?

maven - 导出 Maven 依赖项并维护存储库文件夹结构