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)
如上所述,该插件本身在离线后确实存在于我的存储库中。
看来你的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)
| 归档时间: |
|
| 查看次数: |
6794 次 |
| 最近记录: |