Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何重用maven';s.存储库内容,以避免重新下载每个项目的外部依赖项';你的身材怎么样?_Java_Maven_Jenkins - Fatal编程技术网

Java 如何重用maven';s.存储库内容,以避免重新下载每个项目的外部依赖项';你的身材怎么样?

Java 如何重用maven';s.存储库内容,以避免重新下载每个项目的外部依赖项';你的身材怎么样?,java,maven,jenkins,Java,Maven,Jenkins,我有多个具有外部依赖关系的Jenkins Java项目。我希望Jenkins避免在每个构建上重新下载每个Maven项目的外部依赖项(即.repository的内容)。目前,每个项目都使用一个私有的回购协议,并在每个构建中清除它的工作区 以下是我想到的解决方案。然而,我对Jenkins和Java不太熟悉,所以我正处于学习阶段 不要为每个项目使用私有maven存储库。为每个项目使用默认的/home/jenkins/.m2/.repository目录。外部依赖项可用于每个后续构建 找到一些工具来缓存

我有多个具有外部依赖关系的Jenkins Java项目。我希望Jenkins避免在每个构建上重新下载每个Maven项目的外部依赖项(即.repository的内容)。目前,每个项目都使用一个私有的回购协议,并在每个构建中清除它的工作区

以下是我想到的解决方案。然而,我对Jenkins和Java不太熟悉,所以我正处于学习阶段

  • 不要为每个项目使用私有maven存储库。为每个项目使用默认的
    /home/jenkins/.m2/.repository
    目录。外部依赖项可用于每个后续构建

  • 找到一些工具来缓存外部依赖项(这是artifactory或nexus的用途吗?),这样在每个构建中下载它们就不那么昂贵了
  • 不要在每次构建开始时删除整个项目工作区。有选择地删除文件并保留workspace.repository目录,以便在每次生成时都可以使用该目录
如何避免每次重新下载依赖项?是否有标准的方法来处理上述情况?最终,我希望减少构建时间。下载包需要很长时间,导致构建有时需要45分钟或更长时间


我真的很感谢你的帮助。

你说得绝对正确

  • 100%同意,最好使用通用本地存储库。所有工件都有版本,在不同的项目中重用它们是安全的
  • 是的,Nexus和Artifactory正是为了这个目的而使用的。通常,本地网络中的这种本地工具速度要快得多。此外,它们通常存储构建工件(
    .jar
    .war
    文件),您可以将其用作其他项目中的依赖项
  • 这一点是有道理的,但我在实践中没有看到这一点。如果您可以设置它,那么构建时间应该会减少得更多。但是如果这个缓存出了问题(比如缓存了损坏的工件),那么您必须解决它(可能是手动的)

我还建议深入分析构建时间。您在下载依赖项上实际花费了多少时间?我不认为它需要大部分的时间来构建。

“这就是artifactory或nexus的用途吗?”他们可以用于此,还有其他用途。第一个问题:45分钟到底是为了什么?完整构建包括测试/下载等。需要更多信息:您正在运行多少个模块、多少个类和多少个测试?除了那45分钟听起来真的很奇怪?您是否使用快速机器(带SSD存储;足够的RAM/CPU?)?并分析到底什么需要时间?正在下载真的使用内部网络吗?如果没有,请在您的网络中安装存储库管理器等?谢谢您的回答。下载依赖项大约需要40分钟的构建时间,总共需要45分钟。我们支持一个公司代理。RAM和CPU都不是瓶颈。我想我的问题的初衷是想找到一种方法来防止从Maven central重新下载依赖项。