如何从索引中排除文件但将它们包含在.war文件中?

时间:2017-09-05 09:52:11

标签: java maven intellij-idea

我们使用IDEA构建一个Maven管理的Web应用程序,我们在main/webapp/resources中经常使用Webpack生成捆绑包。理想情况下,不应将这些文件编入索引,但如果我将它们排除在项目结构或项目树中,则当我们运行Tomcat(在IDEA中)时,它们不会包含在.war文件中。有没有办法从索引中排除文件并仍然将它们包含在Web应用程序中?

感谢。

1 个答案:

答案 0 :(得分:1)

问题的关键在于,在IDE中运行Tomcat时,IDEA生成的(爆炸).war文件遵循的规则与执行mvn package的规则不同。您在IDEA中排除的任何内容也会从网络应用中删除。

有两种方法可以解决这个问题。

1。使用Maven构建

第一个是让Maven构建你的模块而不是IDEA。为此,您需要更改启动前命令:删除默认值,单击+,选择运行Maven目标并输入命令行-DskipTests -pl {module_name} package之类的东西(见下图)。 enter image description here 该配置文件将从您在IDEA中选择的任何内容中获取(这在IntelliJ中非常聪明,因此对他们很有帮助)但它的缺点是每次启动Tomcat时都会进行完整构建。在我们的情况下大约是25秒,这是相当多的。

2。编辑工件

第二种方法,它更快,因为它利用了IDEA在后台制作的类的自动编译,是编辑战争工件。为此,请转到构建构建工件...... :战争爆炸编辑... ,选择选项卡输出布局并创建一个同名目录(在我的情况下为resources)并添加目录内容条目。有关详细信息,请查看下图。 enter image description here 您还需要像第一个解决方案一样更改启动前,但只需选择受影响的工件。

<强>更新

由于默认战争和爆炸战争是从Maven导入的,因此对例如选定的配置文件伴随clean命令将工件恢复为默认布局,因此如果您使用此解决方案,则最好创建重复的战争工件。