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

时间:2012-03-05 13:26:07

标签: 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.jar
  • PE-2.0.jar
  • xpp3-1.1.3.4.M-2.0.jar

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

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

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

<outputFileNameMapping>${artifact.artifactId}-${artifact.version}${dashClassifier?}.${artifact.extension}</outputFileNameMapping> - &gt;引发错误:无法为工件[..]复制文件:无效参数

另外,我的版本...... <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>

...给出了奇怪的文件名:

com.foo.bar-${artifact.artifactId}.${artifact.extension}(没有扩展名,没有属性翻译)

我做错了什么?

3 个答案:

答案 0 :(得分:2)

我甚至更晚了,但因为还没有正确答案......

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

G

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

的配置中

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

我迟到了,但我相信你想做的就是这个。

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