OpenLiberty maven 插件和 EAR 项目:忽略了ear.xml 中传递依赖项的排除

问题描述 投票:0回答:1

设置

  • Maven EAR 项目
  • 用于 Liberty 服务器中本地测试部署的 OpenLiberty 插件

插件的行为

该插件部署一个 XML 文件,该文件聚合列表并链接到所需的运行时 jar,而不是构建 EAR 文件 - 到目前为止,一切顺利,应用程序启动并运行。

问题

但是,项目中的某些依赖项存在冲突的传递依赖项,并且 pom.xml 包含大量排除项。不幸的是,这些排除被插件忽略,并且应用程序由于上述冲突(ClassNotFoundException 等)而遇到运行时问题。当然,如果将其放入 EAR 文件中,这些情况就不会发生。

问题

  1. 是否有可能解决此问题并使 *.ear.xml 包含这些排除项?
  2. 如果没有,是否有可能显式地构建插件并使用 EAR 工件而不是隐式生成的 xml 文件?
maven maven-plugin open-liberty
1个回答
0
投票

绕过松散的应用程序

要回答您问题的一部分,您可以配置 liberty-maven-plugin 来部署完整的二进制存档(WAR 或 EAR),而不是通过

liberty-maven- 上的 
<looseApplication>false</looseApplication 参数使用 XML 定义的表示形式插件配置:

    <build>
        <plugins>
            <plugin>
                <groupId>io.openliberty.tools</groupId>
                <artifactId>liberty-maven-plugin</artifactId>
                <version>3.9</version>
                <configuration>
                    <looseApplication>true</looseApplication>
            ...

这对于迭代开发来说不太方便,因为您必须进行完整的“打包”,然后进行另一个“部署”,而不仅仅是进行另一个“编译”,但这将是解决您发现的问题的一种方法.

后续

至于 liberty-maven-plugin 在构建松散应用程序 XML 文件时不处理排除的问题,我建议在 liberty-maven-plugin GitHub 存储库中提出一个问题 (https://github.com/OpenLiberty/ ci.maven/),当我们有一个时我会更新它。

© www.soinside.com 2019 - 2024. All rights reserved.