在WAR的WEB-INF / lib文件夹中重命名Maven依赖项

我需要在Maven生成的WAR的WEB-INF/lib文件夹中有一个JAR依赖项x-1.0.final.jar而不是x-1.0.jar ,它是它在存储库中的名称。 实现这一目标的最佳方法是什么?

在我的POM中,我有:

  foo x 1.0  

我希望它以x-1.0.final.jar出现在WEB-INF/lib文件夹中。

这是对Maven Central的外部依赖我无法控制。 此外,我不想强​​迫所有人使用它将依赖项重新部署到其本地存储库。

是否有我可以使用的Maven插件或者我应该开始编写自己的插件?

您可以使用maven-dependency-plugin在您需要的名称下包含工件。

  org.apache.maven.plugins maven-dependency-plugin    copy     foo x 1.0 jar ${project.build.directory}/${project.build.finalName}/WEB-INF/lib x-1.0.final.jar       

默认情况下, maven-dependency-plugin绑定到process-sources阶段,这似乎足以完成您的任务。 请记住在依赖项中provided为工件provided的范围,以便war插件不会自动包含该范围。

您可能想看看maven war插件的outputFileNameMapping参数是否可以帮助您。

对不起,我完全不明白你的问题,你在POM中导入这个jar的代码是什么?

如果要导入的Jar在存储库中被调用,并且您要在POM中导入正确的文件,那么您不必担心JAR文件的命名约定。

我相信您可能需要做的是重命名存储库中的文件,只需在资源管理器窗口中进入Repository Users / .m2并跟踪文件并重命名,注意这可能会对其他项目产生影响。 。

我建议你做的是复制文件重命名,并使用新的工件id x-1.0.final.jar将其添加到存储库

 mvn install:install-file -Dfile= -DgroupId= \ -DartifactId= -Dversion= -Dpackaging= 

填写<>

希望这有助于克里斯

我知道我正在回复一个旧线程,但我需要执行上述操作并发现此线程很有帮助。 我发现实现这一目标的方法是执行两个步骤:

  1. 使用maven-war-plugin从交付项中排除原始jar文件。
  2. 使用maven-dependency-plugin将原始jar文件复制到新命名的jar文件中,并将其放在WEB-INF / lib目录中。

因此,作为说明,这是如何指定要排除的文件。 在这种情况下x-1.0.jar:

  org.apache.maven.plugins maven-war-plugin 2.6   WEB-INF/lib/x-1.0.jar   

同时指定必须将文件的副本执行到新名称(x-1.0.final.jar),但这需要在打包之前运行。 这由阶段指定:’prepare-package’:

  org.apache.maven.plugins maven-dependency-plugin   prepare-package  copy     the group of the x jar x jar ${project.build.directory}/${project.build.finalName}/WEB-INF/lib x-1.0.final.jar       

在我的例子中,我并不是硬编码1.0,但我认为这应该适用于原始海报问题。