当前位置: 首页 > 面试题库 >

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

魏凯捷
2023-03-14
问题内容

我需要在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>

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

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

是否有我可以利用的Maven插件,还是应该开始自己编写代码?


问题答案:

您可以使用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>

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



 类似资料:
  • 我有一个产生战争的网络项目。war添加了一个jar(我的另一个项目发布在外部repo上)作为编译依赖项。这个jar有自己的编译依赖项,它列在jar的pom文件中,也列在项目的构建脚本中(这是一个Gradle项目)。我希望将jar及其所有依赖项添加到WAR的WEB-INF/lib文件夹中。然而,当我用Gradle构建web项目时,只添加了直接依赖项,而不添加传递依赖项。 下面是我的web项目的构建脚

  • 我正在开发这个maven web(java)应用程序(lwl-module),并通过Eclipse将其部署到JBoss7。 当我在JBoss7下扩展web应用程序的节点时,它下面有两个jar文件,就像它上面的那个一样(bhr-module): 但在我对其中一个jar文件(commons-web)进行更改并重新安装后,该jar文件就从应用程序的节点中消失了。当我重新部署我的web应用程序时,JBos

  • 我正在使用maven war插件生成war文件。 在依赖关系层次结构中,我可以看到许多可传递的依赖关系,它们被提取到lib文件夹中。 经过多次研究,我发现将它们从war lib文件夹中排除的最简单方法是在我的依赖项中将它们声明为“提供”。 然而,我有很多依赖项要排除,我必须在许多WAR pom文件中这样做。 我的问题是: 有没有办法将所有这些依赖项分组到“pom”包装中,并在我的WAR pom文件

  • 我在webapp/WEB-INF/lib/文件夹下添加了一个依赖项。 当我使用maven构建时,我希望在war中将它复制到WEB-INF/lib,而不是WEB-INF/classes/WEB-INF/lib。我正在寻找这是使用maven本身来完成的。 我已经在pom文件中提到了打包作为战争,但是依赖项没有被复制。我是不是在pom文件里漏掉了什么。我已经复制了下面的pom: 附上战争内容截图。

  • 我生成了一个WAR文件,在它的WEB-INF/lib文件夹中有一个名为xyz.jar的jar。此jar在构建过程中作为依赖项生成。现在我需要把这个罐子复制到一个文件夹里,说abc里面的战争。我怎样才能做到这一点?我尝试使用maven-resources-plugin的copy-resources,但它似乎不起作用,因为复制将在war构建之前完成。但是这个jar只在构建过程中生成。谢了。

  • 问题内容: 我正在使用Eclipse,我需要能够将Java库(JAR文件)添加到Web应用程序的文件夹中。我该如何实现? 问题答案: 将jar文件添加到您的WEB-INF / lib文件夹中。 在Eclipse中右键单击您的项目,然后转到“构建路径>配置构建路径” 添加“ Web应用程序库”库 这将确保所有WEB-INF / lib jar都包含在类路径中。