【问题标题】:Maven assembly JAR in EAREAR 中的 Maven 程序集 JAR
【发布时间】:2014-09-23 00:31:08
【问题描述】:

由于我不会进入的原因,我需要构建以下结构:

EAR
 |
 |-- Uber-JAR
 |
 |-- WAR

我可以使用 Maven Assembly 插件构建 uber JAR,但是当我尝试将它包含在 EAR 中(使用 Maven EAR 插件构建)时,它包含一个没有源的普通 JAR 版本(因为我正在使用uber JAR 将项目中的所有源代码拉到一起)。

如何将 uber JAR 包含在 EAR 中?

【问题讨论】:

  • 您正在构建的 Uber jar 是否在其 Maven GAV 中包含分类器?
  • 不...会有帮助吗?
  • 您使用分类器将 uber jar 工件与您的 maven 构建生成的常规 jar 区分开来。通常这是从您的 assembly.xml 的id 元素派生的。然后,您可以通过在 EAR 依赖项和 EAR 插件工件配置中包含 classifier 元素来引用 uber jar。
  • 嗯,不错,不错。我会看看那个。谢谢:)

标签: java maven jar ear


【解决方案1】:

这是修复它的一种方法。如果有更好的方法我想知道:)

只需包括:

<earSourceDirectory>${basedir}</earSourceDirectory>
<earSourceIncludes>/path/to/jar.jar</earSourceIncludes>

在 EAR 插件配置中。

编辑:似乎我说得太早了。在项目的父 pom 中,我列出了所有要构建的模块,并且 EAR 模块上方的 uber JAR(作为最后两个模块)。

它不会构建整个项目:

'Artifact <ARTIFACT> (included by module) does not have an artifact with a file'

编辑(再次):

最终答案

所以,最后,在 Maven Assembly 插件的配置中,我有:

<configuration>
    ...
    <finalName>myjarname</finalName>
</configuration>

这将创建一个名为“myjarname.jar”的 JAR 文件。

在 Maven EAR 插件配置中,我使用如下结构:

<configuration>
    ...
    <modules>
        ...
        <ejbModule>
            <groupId>com.mygroup</groupId>
            <artifactId>myartifact</artifactId>
            <bundleFileName>myjarname.jar</bundleFileName>
        </ejbModule>
    </modules>
</configuration>

这会抓取特定的罐子并将其放入 EAR。瞧!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 2017-08-20
    • 2010-12-12
    • 2014-12-19
    • 1970-01-01
    相关资源
    最近更新 更多