Java 如何重用maven';s.存储库内容,以避免重新下载每个项目的外部依赖项';你的身材怎么样?
我有多个具有外部依赖关系的Jenkins Java项目。我希望Jenkins避免在每个构建上重新下载每个Maven项目的外部依赖项(即.repository的内容)。目前,每个项目都使用一个私有的回购协议,并在每个构建中清除它的工作区 以下是我想到的解决方案。然而,我对Jenkins和Java不太熟悉,所以我正处于学习阶段Java 如何重用maven';s.存储库内容,以避免重新下载每个项目的外部依赖项';你的身材怎么样?,java,maven,jenkins,Java,Maven,Jenkins,我有多个具有外部依赖关系的Jenkins Java项目。我希望Jenkins避免在每个构建上重新下载每个Maven项目的外部依赖项(即.repository的内容)。目前,每个项目都使用一个私有的回购协议,并在每个构建中清除它的工作区 以下是我想到的解决方案。然而,我对Jenkins和Java不太熟悉,所以我正处于学习阶段 不要为每个项目使用私有maven存储库。为每个项目使用默认的/home/jenkins/.m2/.repository目录。外部依赖项可用于每个后续构建 找到一些工具来缓存
- 不要为每个项目使用私有maven存储库。为每个项目使用默认的
目录。外部依赖项可用于每个后续构建/home/jenkins/.m2/.repository
- 找到一些工具来缓存外部依赖项(这是artifactory或nexus的用途吗?),这样在每个构建中下载它们就不那么昂贵了
- 不要在每次构建开始时删除整个项目工作区。有选择地删除文件并保留workspace.repository目录,以便在每次生成时都可以使用该目录
我真的很感谢你的帮助。你说得绝对正确
- 100%同意,最好使用通用本地存储库。所有工件都有版本,在不同的项目中重用它们是安全的
- 是的,Nexus和Artifactory正是为了这个目的而使用的。通常,本地网络中的这种本地工具速度要快得多。此外,它们通常存储构建工件(
或.jar
文件),您可以将其用作其他项目中的依赖项.war
- 这一点是有道理的,但我在实践中没有看到这一点。如果您可以设置它,那么构建时间应该会减少得更多。但是如果这个缓存出了问题(比如缓存了损坏的工件),那么您必须解决它(可能是手动的)
我还建议深入分析构建时间。您在下载依赖项上实际花费了多少时间?我不认为它需要大部分的时间来构建。“这就是artifactory或nexus的用途吗?”他们可以用于此,还有其他用途。第一个问题:45分钟到底是为了什么?完整构建包括测试/下载等。需要更多信息:您正在运行多少个模块、多少个类和多少个测试?除了那45分钟听起来真的很奇怪?您是否使用快速机器(带SSD存储;足够的RAM/CPU?)?并分析到底什么需要时间?正在下载真的使用内部网络吗?如果没有,请在您的网络中安装存储库管理器等?谢谢您的回答。下载依赖项大约需要40分钟的构建时间,总共需要45分钟。我们支持一个公司代理。RAM和CPU都不是瓶颈。我想我的问题的初衷是想找到一种方法来防止从Maven central重新下载依赖项。