我一直在使用 Maven EAR 插件为新项目创建 Ear 文件。我注意到在插件文档中您可以为模块指定排除语句。例如我的插件的配置如下......

  <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ear-plugin</artifactId>
        <version>2.4.1</version>
        <configuration>
            <jboss>
                <version>5</version>
            </jboss>
            <modules>
                <!-- Include the templatecontroller.jar inside the ear -->
                    <jarModule>
                        <groupId>com.kewill.kdm</groupId>
                        <artifactId>templatecontroller</artifactId>
                        <bundleFileName>templatecontroller.jar</bundleFileName>
                        <includeInApplicationXml>true</includeInApplicationXml>
                    </jarModule>
                    <!-- Exclude the following classes from the ear -->
                    <jarModule>
                       <groupId>javax.activation</groupId>
                       <artifactId>activation</artifactId>
                       <excluded>true</excluded>
                    </jarModule>
                    <jarModule>
                   <groupId>antlr</groupId>
                   <artifactId>antlr</artifactId>
                   <excluded>true</excluded>
                </jarModule>
                ... declare multiple excludes
                <security>
                    <security-role id="SecurityRole_1234">
                        <role-name>admin</role-name>
                    </security-role>
                </security>
            </configuration>
        </plugin>
    </plugins>

对于需要排除 4-5 个模块的小型项目来说,这种方法绝对没问题。然而,在我的项目中,我有 30 多个,而且我们才刚刚开始该项目,因此随着项目的扩展,这个数量可能会增加。

除了显式声明每个模块的排除语句之外,是否可以使用通配符或排除所有 Maven 依赖项标志以仅包含我声明的模块并排除其他所有内容?有人知道更优雅的解决方案吗?

有帮助吗?

解决方案

除了显式声明每个模块的排除语句之外,是否可以使用通配符或排除所有 Maven 依赖项标志以仅包含我声明的那些模块并排除其他所有内容?

maven-ear-插件 不提供开箱即用的此功能(而且我认为配置起来并不容易,耳朵必须非常精确地包装)。但是,这里不清楚的是如何获取需要排除的依赖项。根据您的回答,可能有多种方法来处理它们:

  • 如果它们是依赖项,您可以将其中一些声明为可选 你的 工件以避免传递地检索它们。
  • 您可以将某些依赖项标记为“已提供”(并将它们放入父 pom 中,仅在 EAR 的 POM 中重新声明您想要的内容)。

但在没有看到全貌的情况下很难回答。

其他提示

不知道有关通配符是否支持,但它是写自己的魔力非常简单。你可以包装现有的魔力,然后把你自己设计的一些任意的配置,如您的通配符语法。

更妙的是,你可以提交你的魔力的行家团队(!)

我正面临着类似的问题。但那是因为我曾与具有范围提供几罐多模块项目,我只是使其成为一个独立删除父标签从孩子耳朵POM,在那里。然后用包括以包括尽可能多的罐子我需要。

希望这有助于!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top