2017-04-05 53 views
1

我正在准备一个他们可能没有互联网连接的研讨会。因此,我想提供该项目的每个依赖项/插件,以便参与者可以完全脱机工作。创建一个密封的Maven版本

我有一个基本的Maven项目,有一些依赖和两个插件。

首先,我创建了一个备用的本地库:

mvn -Dmaven.repo.local=dependencies dependency:go-offline 

然后,我预计以下命令来运行良好,但它不会!我提到的一些插件丢失不提供行家中央或Maven的分布中:

mvn -o -Dmaven.repo.local=dependencies package 

这失败,出现以下错误信息:

[错误]无法执行目标org.apache。 maven.plugins:maven-resources-plugin:2.6:项目上的资源(默认资源)XXX:目标的执行默认资源org.apache.maven.plugins:maven-resources-plugin:2.6:resources failed:Plugin org。 apache.maven.plugins:maven-resources-plugin:2.6或其某个依赖无法解析:以下工件无法解析:org.apache.maven:maven-profile:jar:2.0.6,org.apache .maven:行家-repository-metadata:jar:2.0.6,org.apache.maven:maven-plugin-registry:jar:2.0.6,classworlds:classworlds:jar:1.1-alpha-2:无法在离线模式下访问中央(https://repo.maven.apache.org/maven2)和工件org.apache.maven:maven-profile:jar:2.0.6还没有从它下载过。

任何想法如何在创建备用本地回购时获取这些缺失位?提前致谢!

回答

1

基于对这个问题的plugin's Jira这个问题仍然没有得到解决。 到目前为止最好的解决方案是使用自定义存储库将项目在线打包一次。

mvn -Dmaven.repo.local=dependencies dependency:go-offline 

然后

mvn -Dmaven.repo.local=dependencies package 

最后

mvn -Dmaven.repo.local=dependencies -o package 

如果你的车间走得更远,比部署,你应该检查下一个目标也运行正常下线!

+0

第二步意味着与会者首先需要在线创建。不过谢谢你们联系这个问题! – Rolf

+0

取决于您想要对本地存储库执行的操作。我希望你想分享你制作的脱机目标?如果是这样,您可以在运行最初的软件包目标后分享它(在课程的研讨会之前完成)。不需要额外的依赖性。 – Romain

0

是否可以为包装所使用的每个插件声明pluginManagement?这应该启用下载时依赖:脱机被调用。

(此外,这将提高稳定性你的构建,因为你一定会认为改变Maven的版本将不会改变插件版本)

,你能否证实这一工程? (现在,我有一些想法可以改进这一点,但至少在几个月前不会提供)