use*_*316 6 offline maven jenkins
我需要使用Jenkins在无法访问maven central的服务器上构建和发布项目,甚至无法访问Nexus.
鉴于我可以访问dev机器上的maven-central,以填充maven local_repository,我可以做到
mvn dependency:resolve-plugins dependency:go-offline
Run Code Online (Sandbox Code Playgroud)
然后复制linux服务器上的local_repository.
然后,获得的骑Non-resolvable parent POM错误,如描述在这里,我充满了特定的配置文件用于Windows(开发)和Linux(詹金斯)以虚假的中心轮廓覆盖由我父POM制成的Maven的中央参考:
<profiles>
<profile>
<id>windows</id>
<activation>
<os>
<family>Windows</family>
</os>
</activation>
<properties> <repository.base.url>file:///c:/maven_distribution_repo/</repository.base.url>
</properties>
</profile>
<profile>
<id>linux</id>
<activation>
<os>
<family>Linux</family>
</os>
</activation>
<properties>
<repository.base.url>file:///appli/Maven_3.1.1_build/maven_distribution_repo/</repository.base.url>
</properties>
<repositories>
<repository>
<id>central</id>
<name>Maven Plugin Repository</name>
<!--<url>http://repo1.maven.org/maven2</url>-->
<url>${repository.base.url}</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Maven Plugin Repository</name>
<!--<url>http://repo1.maven.org/maven2</url>-->
<url>${repository.base.url}</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
这样,mvn -o compile仍然会引发Non-resolvable parent POM错误!但是使用此处--legacy-local-repository建议的选项,设法通过使用本地伪造远程存储库,问题消失了:Non-resolvable parent POM
mvn --legacy-local-repository编译
仍然出现了一个奇怪的错误(在此描述):
[ERROR] Failed to execute goal on project myProject: Could not resolve dependencies for project some.package:myProject:war:0.0.7-SNAPSHOT: Failed to collect dependencies at org.jxls:jxls-poi:jar:1.0.11 -> org.jxls:jxls:jar:[2.0.0,): org.jxls:jxls:jar:[2.0.0,) within specified range -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
但它隐藏了一个早先的警告:
[WARNING] Could not transfer metadata org.jxlsjxls/maven-metadata.xml from/to central (/path):/appli/Maven_3.1.1_build/maven_distribution_repo/org/jxls/jxls/maven-metadata-central.xml (access forbidden)
Run Code Online (Sandbox Code Playgroud)
使用--legacy-local-repository,maven似乎使用分发存储库路径作为本地libs存储库!
我把它们换成了pom:
<profile>
<id>linux</id>
<activation>
<os>
<family>Linux</family>
</os>
</activation>
<properties>
<!--<repository.base.url>file:///appli/Maven_3.1.1_build/maven_distribution_repo/</repository.base.url>-->
<repository.base.url>file:///appli/Maven-3.1.1_build/maven_local_repo/</repository.base.url>
</properties>
...
Run Code Online (Sandbox Code Playgroud)
并且还要复制到本地存储库:all maven-metadata-maven2_central.xmlintomaven-metadata.xml
使用以下bash命令:
for file in $(find /appli/Maven-3.1.1_build/maven_local_repo -type f -name 'maven-metadata-maven2_central.xml'); do cp $file $(echo ${file%/*}/maven-metadata.xml); done
Run Code Online (Sandbox Code Playgroud)
而且......宾果!
建立成功
在稍后阶段,似乎很奇怪,release:perform进入本地lib存储库.
你会有更好的而不是那种痛苦的解决方案吗?
小智 1
Maven部署插件可以解决这个问题。
mvn deploy -DaltDeploymentRepository=local-temp::default::file://directory/
Run Code Online (Sandbox Code Playgroud)
更详尽的例子:
mvn deploy -DaltDeploymentRepository=local-temp::default::file://directory/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3258 次 |
| 最近记录: |