当前位置: 首页 > 面试题库 >

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

曾飞沉
2023-03-14
问题内容

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

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

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


问题答案:

所有这些要说的是:是否有一种直接的方法来构建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。



 类似资料:
  • 问题内容: 将应用程序部署为EAR(具有1个EJB和1个WAR模块)与单独的模块有什么区别?我想使用GlassFish 3 Web配置文件,但它不支持EAR存档。我可以简单地将EJB和WAR用作单独的模块吗?还有其他选择吗? 问题答案: 3种部署变体之间似乎有些混淆: 包含EJB和WEB模块的EAR 部署单独的EJB模块和单独的WEB模块 部署包含EJB类或EJB jar的WEB模块。 在第一种情

  • 问题内容: cgi.escape似乎是一种可能的选择。它运作良好吗?有什么更好的东西吗? 问题答案: 很好 它逃脱了: 至 至 至 对于所有HTML而言,这就足够了。 编辑:如果您有非ASCII字符,您还想转义,以便包含在使用不同编码的另一个编码文档中,如 Craig 所说,只需使用: 不要忘了解码到第一,使用任何编码它编码的。 但是根据我的经验,如果您从头开始一直都在工作,那么这种编码是没有用的

  • 问题内容: 我想在Java SE中拥有 我必须要做些什么?我在我的项目中使用postgres数据库和maven。 我已经在阅读有关Weld的内容(但看起来只像CDI)。我不知道如何增加焊接实体管理器的可能性。我知道我可以通过获得实体管理器 但它不如注射方便。 如果有关于它的任何教程,那就太好了。无论如何,谢谢您的帮助! 问题答案: 首先,EJB是Java EE的一部分,因此您不能在Java SE中

  • 问题内容: .war和.ear文件有什么区别? 问题答案: 在J2EE应用程序中,模块根据其功能打包为EAR,JAR和WAR。 JAR:包含企业Java Bean(类文件)和EJB部署描述符的EJB模块打包为具有.jar扩展名的JAR文件。 WAR:包含Servlet类文件,JSP文件,支持文件,GIF和HTML文件的Web模块打包为具有.war(Web存档)扩展名的JAR文件。 EAR:以上所有

  • 我们正在使用spring Boot进行spring云项目。我们的目标是创建一个可以使用java-jar运行的可执行war。 有没有办法只生成可执行的WAR? 为了便于参考,我附加了pom.xml http://maven.apache.org/xsd/maven-4.0.0.xsd“>4.0.0

  • 问题内容: 我在生产中有20GB +的rdb转储。我怀疑有一组特定的按键使它blo肿。我希望有一种方法可以始终从静态转储分析中发现前100个最大对象,或者将其询问给服务器本身,而服务器本身有7M个对象。 像rdbtools这样的转储分析工具在这个(我认为)非常常见的用例中无济于事! 我当时想编写一个脚本,并使用“ redis-cli调试对象”对整个键集进行迭代,但是我感觉必须缺少某些工具。 问题答