一尘不染

在Maven2中,构建WAR和EAR以在单个POM中包含该WAR的最简单方法是什么?

java

情况非常简单。我有一个要转换为使用Maven构建的Java
Webapp。目前,该应用程序是使用Ant内置到单个WAR文件中的,然后通过非常简单的application.xml将其捆绑到EAR中。

maven-war-pluginmaven-ear- plugin看起来都相当简单的我,看来他们设置我将不得不考虑上述两个不同的项目,该项目WAR的EAR项目的依赖。这似乎有点不方便,尤其是因为WAR项目的配置文件设置会针对每个环境而改变,这似乎迫使我每次尝试构建EAR时都重复进行构建调整。

所有这些要说的是:是否有一种直接的方法来构建WAR并将其打包到这个简单的EAR中?我想避免将它们作为两个单独的项目进行维护,但同样希望不要诉诸使用程序集来完成此任务的过于混乱的hack。


阅读 311

收藏
2020-12-03

共1个答案

一尘不染

所有这些要说的是:是否有一种直接的方法来构建WAR并将其打包到这个简单的EAR中?我想避免将它们作为两个单独的项目进行维护,但同样希望不要诉诸使用程序集来完成此任务的过于混乱的hack。

简短的回答:
,没有简单的方法可以做到这一点,因为这会违反Maven规则,即“每个项目一个工件”(理解每个项目一个输出,在99%的情况下是正确的)。

而且实际上,我强烈建议您 不要
走黑路,而忘记使用程序集来创建EAR。取而代之的是,创建两个模块,一个模块具有包装类型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。

2020-12-03