【问题标题】:Why use a parent pom file when generating an ear file?为什么在生成ear文件时使用父pom文件?
【发布时间】:2012-03-26 03:56:10
【问题描述】:

我在 SO - How to add WAR inside EAR with Maven 上阅读了这个问题

在“joelittlejohn”的投票中获得最高评价 -

"现在创建一个父模块(使用 pom)并添加 战争模块和耳机模块。确保你设置了父级 战争和耳朵模块corrently。当你运行 mvn 这个新父级的包,战争将构建一个战争文件 模块和一个ear文件(包含战争)将由ear构建 模块。”

但是为什么要创建父 pom 呢?为什么不只用一个 pom 创建一个标准的 maven 项目。这个 pom 文件包含依赖项和模块,然后从这个 pom 文件生成 .ear 文件?

类似:

<plugin>
    <artifactId>maven-ear-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <finalName>MyEarFile</finalName>
        <version>5</version>
        <generatedDescriptorLocation>${basedir}/src/main/application/META-INF</generatedDescriptorLocation>
        <modules>
            <webModule>
                <groupId>com.your.group.id</groupId>
                <artifactId>your-war-artifact</artifactId>
                <uri>YouWarFile.war</uri>
                <bundleFileName>YouWarFile.war</bundleFileName>
                <contextRoot>/appname</contextRoot>
            </webModule>
        </modules>
    </configuration>

    <dependencies>
    <dependency>
    <groupId>com.your.group.id</groupId>
    <artifactId>your-war-artifact</artifactId>
    <version>your-war-version</version>
    <type>war</type>
    </dependency>
    </dependencies>

</plugin>

【问题讨论】:

    标签: jakarta-ee maven maven-2


    【解决方案1】:

    在 maven 中,为您要构建的每个战争都有一个模块是很典型的。然后 .ear 文件将包含多个战争。因此,每个模块都有一个很好的职责分离。父 pom 只是将它们包装在一起。

    【讨论】:

    • 父 pom 包裹在一起而子 pom 没有包裹在一起的东西是什么?
    • 取决于您使用的功能。它允许您为适用于所有人的子模块进行大量配置。例如:依赖管理、资源过滤、构建任务的插件等。它还允许您一次释放所有模块。一个没有子模块的大 pom 的缺点是你的任何子模块都不能单独使用。因此,如果您有一个项目,其中有一个您想在其他地方使用的 jar(例如,您为具有某些接口的 Web 服务定义了一个 apis 模块),您可能希望其他项目引用该模块。
    • 谢谢,您认为在上面的例子中,当所有创建 ear 的 pom 定义都包含在子 pom 中时,使用父/子层次结构创建一个 ear 文件是多余的吗?
    • 不是真的,因为你最终会使用父 pom 来处理很多常见的东西。
    猜你喜欢
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 2016-04-09
    相关资源
    最近更新 更多