Maven-ear-plugin - 排除多个模块,即罐子、战争等
-
20-09-2019 - |
题
我一直在使用 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,在那里。然后用包括以包括尽可能多的罐子我需要。
希望这有助于!
不隶属于 StackOverflow