情况非常简单。我有一个要转换为使用Maven构建的Java Webapp。目前,该应用程序是使用Ant内置到单个WAR文件中的,然后通过非常简单的application.xml将其捆绑到EAR中。
maven-war-pluginmaven-ear-plugin对我来说都非常简单,看来它们使我不得不将以上内容视为两个不同的项目,而WAR项目是EAR项目的依赖项。这似乎有点不方便,尤其是因为WAR项目的配置文件设置会针对每个环境而变化,这似乎迫使我每次尝试构建EAR时也要重复进行构建调整。

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

最佳答案



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

实际上,我强烈建议您而不是采取骇人听闻的方式,而忘记使用程序集来创建EAR。取而代之的是,创建两个模块,一个模块的包装类型为war,另一个模块的包装类型为wart,具体取决于 war 工件,并将它们声明为父ear的模块。像这样:

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。

10-07 16:16
查看更多