我一直在使用Maven EAR插件为新项目创建我的ear文件。我注意到在插件文档中,您可以为模块指定exclude语句。例如,我的插件的配置如下......
<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多个,我们只是刚刚启动项目,因此它的扩展可能会增长。
除了明确声明每个模块的exclude语句之外,是否可以使用通配符或排除所有maven依赖项标志,只包含我声明并排除其他所有模块的模块?有人知道更优雅的解决方案吗?
答案 0 :(得分:1)
不确定是否支持通配符,但编写自己的mojo非常简单。您可以包装现有的mojo,然后对您自己的设计进行一些任意配置,例如通配符语法。
更好的是,你可以将你的mojo提交给maven团队(!)
答案 1 :(得分:1)
除了明确声明每个模块的exclude语句之外,是否可以使用通配符或排除所有maven依赖项标志,只包含我声明的那些模块并排除其他所有模块?
maven-ear-plugin并不提供开箱即用的功能(我认为无论如何都不容易配置,耳朵必须非常精确地打包)。但是,这里不清楚的是如何获得需要排除的依赖项。根据您的答案,可能有几种方法来处理它们:
虽然没有看到整个画面但很难回答。
答案 2 :(得分:0)
我遇到了类似的问题。但那是因为我有一个多模块项目,有几个罐子具有提供的范围,我只是从子耳朵pom中删除了父标签,在那里使它独立。然后使用include来包含我需要的罐子。
希望这会有所帮助!!!