3

我有一个具有 3rd 方依赖项的项目,以及对内部项目的依赖项。我需要从内部开发的依赖工件中去除版本号。

例如:spring-2.5.6.jar应该在最终输出中为spring-2.5.6.jarMyInternalProject-1.0.17.jar需要更改为MyInternalProject.jar.

我可以通过它们的组 ID 轻松识别内部依赖项(它们都类似于com.mycompany.*)。有maven-dependency-plugin一个stripVersion选项,但它似乎没有足够的选择性。有没有办法做到这一点,没有明确命名每个依赖项以及它们的最终名称应该是什么?


换一种说法:

我想outputFileNameMapping为基于组 ID 的工件的 maven-assembly-plugin 提供不同的 s。有没有办法做到这一点?

4

2 回答 2

6

我认为您可以使用以下配方:

首先,在您的聚合器 pom 中使用dependency:copy-dependencies目标将您的 jar 复制到某个中间位置。您将需要两次执行,一次<stripVersion>true</stripVersion>用于您的内部依赖项;和一个<stripVersion>false</stripVersion>用于 3rd 方库。您可以包含/排除基于 GroupId 的工件,有关完整详细信息,请参阅http://maven.apache.org/plugins/maven-dependency-plugin/copy-dependencies-mojo.html

那么使用 maven-assembly-plugin 构建 .zip 应该是一项简单的任务!

于 2013-09-12T08:56:33.110 回答
0

根据评论,我会在这里重新评估您的方法。通常将 jars 签入源代码管理不是一个好主意,尤其是未版本控制的 jars。想象一下,如果我只是有一个引用someArtifact.jar的项目并且我正在尝试调试它——我怎么知道它使用的是哪个版本?

像 artifactory 和 nexus 这样的工具是为存储你的 jars 版本而构建的,包括内部和第 3 方(它们也可以代理像 maven Central 这样的公共存储库)。为了保持构建的可重复性,我会将您的二进制文件检查到为此设计的工具中,然后您可以按版本引用它们。在开发过程中,您可以参考 SNAPSHOT 版本的 jar 以获取最新版本,然后在发布时,您可以参考稳定版本的二进制文件。

源代码控制系统旨在存储源代码,而不是二进制文件。

于 2013-09-11T21:28:04.107 回答