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

hle*_*one 15 java maven-2 maven-3

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

在我的POM中,我有:

<dependency>
  <groupId>foo</groupId>
  <artifactId>x</artifactId>
  <version>1.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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

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

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

Unc*_*ter 32

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

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <goal>copy</goal>
        </goals>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>foo</groupId>
              <artifactId>x</artifactId>
              <version>1.0</version>
              <type>jar</type>
              <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
              <destFileName>x-1.0.final.jar</destFileName>
            </artifactItem>
          </artifactItems>
        </configuration>
      </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

默认情况下,maven-dependency-plugin绑定到process-sources适合您的任务的阶段.请记住provided在依赖项中设置工件的范围,以便war插件不会自动包含它.

  • 此解决方案排除了重命名库的所有依赖项 (3认同)
  • 小心destFileName必须在artifactItem元素中,我的是外面的,它不起作用.当我复制到artifactItem标签下的问题消失了 (2认同)

Rag*_*ram 5

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