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

rdlzhqv9  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(220)

我正在处理一个带有war外部依赖项的Maven项目(我们将此war依赖项称为WAR-DEP
在构建之后和打包阶段,我使用maven-war插件的覆盖功能将WAR-DEP的内容与当前构建的内容合并。
WAR-DEP中,我们在其WEB-INF/lib文件夹中有一些所需的jar,因此通过覆盖,我们最终获得了最终war中所需的一切,但问题开始于为我们提供WAR-DEPwar的项目在WEB-INF/lib-new中添加了一个新文件夹,并将之前在WEB-INF/lib文件夹中的一些jar移到了这个新文件夹WEB-INF/lib-新的
使用WAR-DEP的新版本构建后,覆盖图按预期工作,因此我们最终在WEB-INF中有两个文件夹(lib和lib-new),我们的应用程序停止工作,因为WEB-INF/lib-new不能被tomcat服务器识别。因此,在不更改tomcat端的类路径的情况下,是否有方法可以在生成war之前将lib-new的内容移动到lib文件夹中?我的意思是,例如在覆盖,但我不知道如何做到这一点。感谢您的投入。

2ledvvac

2ledvvac1#

maven-war-plugin不具有所需的功能,但是maven-dependency-pluginmay help,smth.例如:

<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>

相关问题