mvn dependency:go-offline 不下载 maven-surefire-plugin 的要求

Ben*_*zun 7 maven maven-dependency-plugin maven-surefire-plugin

我正在尝试在 docker 中构建一个开源项目,并希望节省构建时间,因此我尝试使用mvn dependency:go-offline,它下载 maven-surefire-plugin 本身。

之后运行的mvn -o clean package结果是

[错误] 无法在项目 oxalis-api 上执行目标 org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M4:test (default-test):执行目标 org.apache.maven 的默认测试.plugins:maven-surefire-plugin:3.0.0-M4:测试失败:插件org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M4或其依赖项之一无法解析:无法访问离线模式下的apache.snapshots ( http://repository.apache.org/snapshots/ ) 并且之前尚未从中下载工件 org.codehaus.plexus:plexus-utils:jar:1.1 。-> [帮助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>
Run Code Online (Sandbox Code Playgroud)

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

Alb*_*tti 5

看来你的maven本地存储库使用了遗留结构,详细信息在这里。因此,目标dependency:go-offline以遗留模式准备存储库,然后实际构建的目标package无法找到依赖项,因为它使用默认模式。

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

mvn dependency:resolve-plugins dependency:go-offline -B 
Run Code Online (Sandbox Code Playgroud)

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

mvn package -o -llr -B
Run Code Online (Sandbox Code Playgroud)

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

mvn dependency:get -Dartifact=org.openclover:clover-maven-plugin:4.4.1 -B
Run Code Online (Sandbox Code Playgroud)

提示 2:如果您在离线时遇到问题并且未获取依赖项,可能是因为您在下载依赖项和构建项目时有不同的 Maven 设置。您可以考虑删除本地存储库中的maven-metadata*.xml和,您可以使用以下命令:_*.repositories

find ~/.m2/repository -name 'maven-metadata*.xml' | xargs -n1 rm
find ~/.m2/repository -name '_*.repositories' | xargs -n1 rm
Run Code Online (Sandbox Code Playgroud)


小智 0

我也面临同样的问题,将版本从 3.0.0-M4 更改为 2.12,它对我有用。我仍在试图找出为什么它不能与 3.0.0-M4 一起使用。