的IntelliJ多模块Maven项目,在子模块的一个更新不会传播到战争(Intellij mult

2019-09-01 01:38发布

我使用的IntelliJ IDEA 12,有一个多模块Maven项目。

为简单起见,让我们假设我有:

  • 模块A - 编译成JAR
  • 模块B - 取决于模块A和还编译为JAR
  • 模块C - 取决于模块B,但编译为WAR

我知道的IntelliJ有Maven项目它自己的构建机制,所以当我建立的第一次战争,它,因为它应该部署到Tomcat通常所有的作品。 当你需要在子模块中的一个变化的问题入手,例如模块A和重建战争(重建模块C)

的IntelliJ,因为它似乎使用旧的模块先前建立和忽略我在模块A制造/建筑模块C时所做的任何更改坛子

我发现解决这个问题的唯一方法是运行一个Maven构建模块上A和B以及initiallly用Maven构建这个WAR并将其部署为外部源。

问题是,我有10个WAR的我要部署和编译罐子更多的则20个个子模块。 它没有任何意义,重建所有的战争时,我只是想看看我在影响一个WAR子模块之一所做的更改。 而且肯定没有任何意义与命令行外部建立他们而支付的IntelliJ终极许可证(这样我就可以与应用程序服务器的工作)

现在比较这种行为给其他IDE 1. Netbeans的工作与Maven项目通过自然Maven和所有构建/部署,如使用Maven,而不是由一些内部机制来实现。 2. Eclipse中做同样的与它的内部机制,但是当WAR项目中重建所有JAR文件被更新。 (或者说,工作一些其他的魔法)

有没有办法工作,用不同的想法或有没有?

Answer 1:

最后,我发现这个混合解决方案:在运行Tomcat之前要做的事情:

  1. 清洁所有
  2. 构建,打包和注册(在库)应该成为JAR的所有项目
  3. 仅编译(不要建)WAR项目
  4. 构建WAR与文物的IntelliJ(这是需要热插拔的可用性)

这是我如何启动Tomcat。

详细资料:

  1. 创建3个Maven的运行配置

    1.1 清理所有项目 1.2 建立与JAR文物的所有项目。 您需要手动包括与“-pl”行家选择您的所有项目。 您也可以选择运行“Maven的干净”推出这种配置之前(看截图) 1.3 编译所有项目WAR文物- 与Maven没有包装

  2. 创建Tomcat配置构建战争文物,包括其他配置启动之前运行

现在,当Tomcat的运行就可以代码热插拨变化(如果JVM允许的话)或者只需重新启动服务器,包括所有的新代码/修改。 该退的,这是稍长启动Tomcat的时间。 这是我们都愿意一起生活.....现在



Answer 2:

我觉得热码部署仅具有分解文物工作。 在IDEA 11重新命名展开的目录,因为Maven的文物是在相同的位置和名称是相同的。



文章来源: Intellij multi-module maven project, update in one of the submodules is not propagated to war