【问题标题】:Conditionally build EAR file with maven使用 maven 有条件地构建 EAR 文件
【发布时间】:2013-07-07 05:23:15
【问题描述】:

我很难找到构建不同版本 EAR 的解决方案(使用 maven-ear-plugin)。

我想要的是能够生成用于生产的 EAR 或用于测试的 EAR,其中测试 EAR 具有不同的 ejb-jar.xml 部署描述符以及 src/test 文件夹中的一些附加类。

到目前为止,我发现的唯一方法是引入一个配置文件“blubb”,在其中我覆盖 jar-plugin 配置以包含来自 src/test/resources 的 ejb-jar.xml 以及一些 java 文件,并向我的工件 ID 添加自定义后缀(或设置分类器)。然后在我的部署 pom 中引入相同的配置文件,我依赖于拥有后缀的工件来构建修改后的 EAR。

我从各种来源读到过,根据配置文件生成同一项目的不同 jar 是邪恶的(即不是 Maven 方式)。 (例如在 Maven best practice for generating multiple jars with different/filtered classes? 要么 http://blog.sonatype.com/people/2010/01/how-to-create-two-jars-from-one-project-and-why-you-shouldnt/)

所以我的问题是,我该怎么做呢?如果我使用我的测试特定代码构建一个附加模块以有条件地包含在我的部署中的配置文件中,我的问题是我的 ejb-jar.xml 需要驻留在该 jar 文件的 META-INF 目录中,因为我的附加“test”模块将包含在不同的 jar 中,因此 ejb-jar.xml 不会应用于我原来的 jar 中的 ejb。

有什么建议,我如何以 maven 方式解决这个问题(使用修改过的部署描述符和其他类生成一个特殊的测试耳朵)?

高度赞赏提示和见解:-)

【问题讨论】:

    标签: maven jakarta-ee ear


    【解决方案1】:

    最好的解决方案是从同一个 .但如果你真的喜欢这样做,你应该创建两个单独的耳模块:

     +-- root (pom.xml)
          +--- mod-ejb (pom.xml)
          +--- mod-xxx (pom.xml) 
          +--- mod-ear (pom.xml)
          +--- mot-it-ear (pom.xml)
    

    这意味着有两个 EAR 模块,它们可以有不同的描述符等。

    【讨论】:

    • 但是假设我有 200 个模块,每个模块都安装在我的本地 repo 中,然后我执行我的部署 pom,在那里我收集所有 200 个依赖项并将它们打包到我的耳朵中。我不确定,我应该如何调整该步骤中单个项目的内容,例如,如果 200 个项目中有 50 个需要在其 META-INF 中的 ejb-jar.xml。首先,我必须以不同的方式构建它们,使用不同的工件 ID,不是吗?所以所有 200 个项目都必须有所不同,我不知道如何实现,不能真正复制每个模块......
    • 两个耳朵的原因是,某些组件需要被模拟出来以对耳朵进行某种类型的测试......
    【解决方案2】:

    我找到了一些方法来实现我想要的,使用 maven-dependency-plugin。

    基本问题是,不应该重复任何代码,但是,应该根据需要使用附加/替换内容构建相同的模块。

    我这样做的方式是制作第二个模块,并在声明中将我想要修改的模块声明为唯一依赖项。然后在构建周期中,我添加了目标为“unpack-dependencies”的 maven-dependency-plugin,并选择在“prepare-package”时将原始依赖项解压到 target/classes 文件夹中。

    这样我得到了第二个模块,它具有第一个模块的内容,然后我可以对调整后模块的主要来源进行一些修改。

    总的来说,这仍然是一切,但很漂亮,在我看来,Maven 有它的时间,但现在是时候使用更好的构建工具了 ;-)

    顺便说一句,如果有人知道更优雅的解决方案,我仍然持开放态度......我的问题经常是,在任何情况下我都不想复制我的配置甚至我的代码。看来 Maven 让这变得非常困难......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多