情况非常简单。我有一个 Java Web 应用程序,我正在将其转换为使用 Maven 构建。目前,该应用程序使用 Ant 构建到单个 WAR 文件中,然后使用非常简单的 application.xml 将其捆绑到 EAR 中。
maven-war-plugin
and maven-ear-plugin
对我来说,这两个项目看起来都非常简单,而且它们似乎让我被迫将上述项目视为两个不同的项目,其中 WAR 项目是 EAR 项目的依赖项。这似乎有点不方便,特别是因为 WAR 项目的配置文件设置会针对每个环境而改变,这似乎会迫使我每次尝试构建 EAR 时都重复该构建调整。
所有这些都是为了说明:是否有一种直接的方法来构建 WAR 并将其打包到这个极其简单的 EAR 中?我想避免将它们维护为两个单独的项目,但同样不希望使用程序集来实现这一目标。
所有这些都是为了说明:是否有一种直接的方法来构建 WAR 并将其打包到这个极其简单的 EAR 中?我想避免将它们维护为两个单独的项目,但同样不希望使用程序集来实现这一目标。
简短回答:no,没有简单的 Maven 方法可以做到这一点,因为这会违反 Maven 规则,即“每个项目一个工件”(理解每个项目一个输出,这在 99% 的情况下都是如此)。
事实上,我强烈推荐not采用 hacky 方式,忘记使用程序集来创建 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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)