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

正在从war文件中的Maven依赖项文件名删除版本,maven,Maven,我遇到了一个问题,Maven中有几个外部依赖项 我有一些第三方库,它们共同构成了一个产品的发行版。第三方产品不使用maven或提供pom文件,因此我只能使用耦合的.jar文件集合,我不知道这些文件的确切耦合,只是它们都属于一个整体 假设我有这些文件: mail.jar 瓶 xpp3-1.1.3.4.M.jar 它们都是同一产品“版本”的一部分,比如说2.0版。使用maven构建此项目时,我会进入/target/MyProject文件夹和MyProject.war文件,这些文件的名称如下:

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

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

假设我有这些文件:

  • mail.jar
  • xpp3-1.1.3.4.M.jar
它们都是同一产品“版本”的一部分,比如说2.0版。使用maven构建此项目时,我会进入/target/MyProject文件夹和MyProject.war文件,这些文件的名称如下:

  • mail-2.0.jar
  • pe-2.0.jar
  • xpp3-1.1.3.4.M-2.0.jar
如何告诉maven在构建过程中排除这些版本标记,以便在最终构建中获得这些文件名

  • mail.jar
  • xpp3-1.1.3.4.M.jar
我已经看过maven war插件:2.2->,默认值:

${artifact.artifactId}-${artifact.version}${dashClassifier?}.${artifact.extension}
->引发错误:未能复制工件[…]的文件:参数无效

还有,我的版本。。。
${artifact.artifactId}.${artifact.extension}

…提供了奇怪的文件名:

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


我做错了什么?

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

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

我来晚了,但我相信你想做的就是这样

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

${project.artifactId}

我来晚了,但我相信你想做的就是这样

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

${project.artifactId}

我更晚了,但因为还没有正确的答案

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

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

maven-war-plugin

的配置中,我甚至更晚了,但因为还没有正确的答案

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

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

maven-war-plugin的配置中

这不是我问题的答案。这是一个例子,我有20个库,在某种程度上相互依赖,与第三方产品一起交付。供应商已经对车轮进行了改造。它们是在我的POM中声明的,但是这个POM的结果是,我的结果库现在在它们的名称中具有的值。我想摆脱它。在文件名中包含这些版本号到底有什么问题?这不是我问题的答案。这是一个例子,我有20个库,在某种程度上相互依赖,与第三方产品一起交付。供应商已经对车轮进行了改造。它们是在我的POM中声明的,但是这个POM的结果是,我的结果库现在在它们的名称中具有的值。我想摆脱它。文件名中有这些版本号的确切问题是什么?这将改变战争的名称,而不是.war中的库,我相信,这就是他所要求的。这将改变战争的名称,而不是.war中的库,我相信,这就是他所要求的。