【问题标题】:War external dependency overlay - move jars from WEB-INF/lib-new to WEB-INF/lib战争外部依赖覆盖 - 将 jar 从 WEB-INF/lib-new 移动到 WEB-INF/lib
【发布时间】:2022-08-16 00:58:42
【问题描述】:

我正在开发一个带有战争外部依赖项的 Maven 项目(让我们称之为战争依赖项战争部)

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

战争部我们里面有一些必需的罐子WEB-INF/库文件夹,所以有了覆盖,我们最终得到了我们在最后一场战争中需要的一切,但是当项目为我们提供战争部战争中添加了一个新文件夹WEB-INF/lib-new并移动了一些我们以前在WEB-INF/库文件夹到这个新文件夹WEB-INF/lib-new.

在使用这个新版本的战争部覆盖按预期工作,因此我们最终在 WEB-INF 中有两个文件夹(lib 和 lib-new),并且我们的应用程序停止工作,因为这Tomcat 服务器无法识别 WEB-INF/lib-new.因此,在不更改 tomcat 端的类路径的情况下,有没有办法可以在生成战争之前将 lib-new 的内容移动到 lib 文件夹中?我的意思是例如在覆盖期间,但我不确定如何执行此操作。 感谢您的投入。

  • 您要解决哪个潜在问题?
  • 你为什么使用/lib-new 之类的东西?没有意义...因为它不是默认值...
  • @ThorbjørnRavnAndersen 该应用程序需要添加到 WEB-INF/lib-new 中的所有 jar 才能正常工作,但在运行时不会在 tomcat 上下文中加载文件夹。 tomcat 仅从 WEB-INF/lib 目录加载依赖项。我的解决方案是在覆盖(maven 包阶段)期间将我们在 lib-new 中的所有 jar 放入 lib 文件夹中,但不知道如何实现。如果有的话,请随时提出另一种修复方法。谢谢
  • @khmarbaise war-dep 是一堵外墙(由第三方实体建造),因此我们无法控制它。

标签: java maven tomcat maven-war-plugin


【解决方案1】:

maven-war-plugin 没有所需的功能,但是 maven-dependency-plugin may 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>

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 2017-10-19
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多