情况非常简单。我有一个要转换为使用Maven构建的Java Webapp。目前,该应用程序是使用Ant内置到单个WAR文件中的,然后通过非常简单的application.xml将其捆绑到EAR中。
maven-war-plugin和maven-ear- plugin看起来都相当简单的我,看来他们设置我将不得不考虑上述两个不同的项目,该项目WAR的EAR项目的依赖。这似乎有点不方便,尤其是因为WAR项目的配置文件设置会针对每个环境而改变,这似乎迫使我每次尝试构建EAR时都重复进行构建调整。
maven-war-plugin
maven-ear- plugin
所有这些要说的是:是否有一种直接的方法来构建WAR并将其打包到这个简单的EAR中?我想避免将它们作为两个单独的项目进行维护,但同样希望不要诉诸使用程序集来完成此任务的过于混乱的hack。
简短的回答: 不 ,没有简单的方法可以做到这一点,因为这会违反Maven规则,即“每个项目一个工件”(理解每个项目一个输出,在99%的情况下是正确的)。
而且实际上,我强烈建议您 不要 走黑路,而忘记使用程序集来创建EAR。取而代之的是,创建两个模块,一个模块具有包装类型war,另一个模块具有包装类型,ear具体取决于战争工件,并将它们声明为父模块pom.xml。像这样:
war
ear
pom.xml
my-project |-- pom.xml // packaging of type pom and my-war and my-ear as modules |-- my-war | `-- pom.xml // packaging of type war `-- my-ear `-- pom.xml // packaging of type ear
如果您选择Maven,请采用Maven哲学,不要与之抗争,这将为您节省很多痛苦。认真地讲,破解程序集来执行maven-ear- plugin已经在做的只是反DRY。在这种情况下,您最好坚持使用Ant。