我们使用IDEA构建一个Maven管理的Web应用程序,我们在main/webapp/resources
中经常使用Webpack生成捆绑包。理想情况下,不应将这些文件编入索引,但如果我将它们排除在项目结构或项目树中,则当我们运行Tomcat(在IDEA中)时,它们不会包含在.war文件中。有没有办法从索引中排除文件并仍然将它们包含在Web应用程序中?
感谢。
答案 0 :(得分:1)
问题的关键在于,在IDE中运行Tomcat时,IDEA生成的(爆炸).war
文件遵循的规则与执行mvn package
的规则不同。您在IDEA中排除的任何内容也会从网络应用中删除。
有两种方法可以解决这个问题。
第一个是让Maven构建你的模块而不是IDEA。为此,您需要更改启动前命令:删除默认值,单击+,选择运行Maven目标并输入命令行像-DskipTests -pl {module_name} package
之类的东西(见下图)。
该配置文件将从您在IDEA中选择的任何内容中获取(这在IntelliJ中非常聪明,因此对他们很有帮助)但它的缺点是每次启动Tomcat时都会进行完整构建。在我们的情况下大约是25秒,这是相当多的。
第二种方法,它更快,因为它利用了IDEA在后台制作的类的自动编译,是编辑战争工件。为此,请转到构建→构建工件...... →:战争爆炸→编辑... ,选择选项卡输出布局并创建一个同名目录(在我的情况下为resources
)并添加目录内容条目。有关详细信息,请查看下图。
您还需要像第一个解决方案一样更改启动前,但只需选择受影响的工件。
<强>更新强>
由于默认战争和爆炸战争是从Maven导入的,因此对例如选定的配置文件伴随clean
命令将工件恢复为默认布局,因此如果您使用此解决方案,则最好创建重复的战争工件。