正在从war文件中的Maven依赖文件名中删除版本



我遇到了一个问题,在Maven中有几个外部依赖项。

我有第三方库,它们共同构成了一个产品的发行版。第三方产品不使用maven或提供pom文件,所以我只能使用一组耦合的.jar文件,我不知道它们的确切耦合,只是它们都属于一起。

假设我有这些文件:

  • mail.jar
  • pe.jar
  • xpp3-1.1.3.4.M.jar

它们都是同一"版本"产品的一部分,比如2.0版本。当我用maven构建这个项目时,我会进入/target/MyProject文件夹和MyProject.war文件,这些文件的名称如下:

  • 邮件2.0罐
  • pe-2.0罐
  • xpp3-1.1.3.4.M-2.0.jar

如何告诉maven在构建过程中排除这些版本标记,以便在最终构建中获得这些文件名?

  • mail.jar
  • pe.jar
  • xpp3-1.1.3.4.M.jar

我看过maven war插件:2.2->,默认值:

<outputFileNameMapping>${artifact.artifactId}-${artifact.version}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>->抛出错误:无法复制工件的文件[..]:参数无效

还有,我的版本。。。<outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>

给出奇怪的文件名:

com.foo.bar-${artifact.artifactId}.${artifact.extension}(无扩展,无属性转换)

我做错了什么?

我更晚了,但由于还没有正确的答案。。。

当您构建一个WAR工件,并且您希望位于target/${finalName}/WEB-INF/lib中的依赖JAR在文件名中没有版本号时,可以使用

<outputFileNameMapping>@{artifactId}@@{dashClassifier?}@.@{extension}@</outputFileNameMapping>

在CCD_ 4的配置中。

你走错了路。将它们部署到您的本地Nexus实例,并在项目的POM中将它们声明为依赖项。提示:XPP3和mail.jar已经在Maven Central中提供。不要重新发明轮子。

我参加聚会迟到了,但我相信你想做的就是这样。

<build>
  <finalName>${project.artifactId}</finalName>
</build>

最新更新