【发布时间】:2017-07-31 20:08:05
【问题描述】:
我有一个项目集合,它们都有一个大的第三方依赖项,在构建过程中将这个 jar 复制到所有项目似乎很浪费空间,是否可以让 maven 只创建一个指向单个缓存副本的硬链接还是软链接?
这不是 Maven multi-module: aggregate common dependencies in a single one? 的重复,它涉及如何从 pom 角度管理常见依赖项。这是关于如何避免将相同的依赖文件复制到多个项目的目标,而只创建指向单个实例的链接以节省空间。
问题的简单版本是:是否存在与 maven-dependency-plugin 的 copy-dependencies 目标等效的创建链接与复制文件的目标。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
【问题讨论】:
-
好的,所以你自己做。下一个明显的问题是“为什么?”但你没有告诉我们。我不确定您是否认为通过描述整个构建过程会泄露公司机密,或者您是否认为“每个人都这样做”并假设我们都知道您要完成的工作。如果是后者,答案是否定的;人们通常不会将他们的依赖项复制到构建目录中。
-
另一方面,如果您这样做有一个原因,那么您需要告诉我们原因。否则你得到的任何答案都将是无关紧要的。我建议删除此问题并创建一个新问题,该问题 (1) 显示您的 POM,并且 (2) 解释您对复制的依赖项所做的操作。你可能会得到另一种方法,或者你可能不会(实际上,除非我们谈论的是千兆字节的依赖关系,否则它可能还不错)。
-
原因是存在一个大小为几百 MB 的依赖项,并且每个模块都需要它。为每个模块复制它意味着在打包过程中,我需要大约 15Gb 的空间,而实际上我应该只需要大约 1 个。