War外部依赖覆盖-将jar从WEB-INF/lib-new移动到WEB-INF/lib



我正在处理一个具有战争外部依赖性的maven项目(让我们称之为战争依赖性war-DEP(

在构建之后和包阶段,我将获取WAR-DEP的内容,并使用maven WAR插件的覆盖功能将其与当前构建的内容合并。

WAR-DEP中,我们在它的WEB-INF/lib文件夹中有一些所需的罐子,因此有了覆盖层,我们最终在最后的战争中获得了所需的一切,但当为我们提供WAR-DEP战争的项目在WEB-INF-libnew中添加了一个新文件夹,并将我们以前在WEB-INF/lib文件夹添加到此新文件夹WEB-INF/lib-new

使用这个新版本的WAR-DEP构建后,覆盖层按预期工作,因此我们最终在WEB-INF中有两个文件夹(lib和lib-new(,我们的应用程序停止工作,因为tomcat服务器无法识别这个WEB-INF/lib-new。那么,在不更改tomcat端的类路径的情况下,有没有一种方法可以在生成war之前将lib-new的内容移动到lib文件夹中?我的意思是,例如在覆盖过程中,但我不确定如何做到这一点。感谢您的投入。

maven-war-plugin没有所需的功能,但maven-dependency-plugin可能会有所帮助。类似:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>unpack-lib-new</id>
<goals>
<goal>unpack</goal>
</goals>
<phase>prepare-package</phase>
<configuration>
<artifactItems>
<artifactItem>
<groupId>dep-group-id</groupId>
<artifactId>dep-artifiact-id</artifactId>
<version>dep-version</version>
<type>war</type>
<outputDirectory>${project.build.directory}/${build.finalName}/WEB-INF/lib</outputDirectory>
<includes>WEB-INF/lib-new/*</includes>
<fileMappers>
<org.codehaus.plexus.components.io.filemappers.FlattenFileMapper/>
</fileMappers>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
<configuration>
...
<overlays>
<!-- current project -->
<overlay/>
<overlay>
<id>dep-skip-lib-new</id>
<groupId>dep-group-id</groupId>
<artifactId>dep-artifact-id</artifactId>
<excludes>
<exclude>WEB-INF/lib-new/*</exclude>
</excludes>
</overlay>
</overlays>
...
</configuration>
</plugin>

最新更新