我有一个多模块Maven项目,它有一个公共模块,它是另外两个模块的依赖项。其中一个模块生成一个战争,通过叠加层集成在另一个战争中。
最终的战争是由Maven clean install命令生成的,没有问题。目标中的所有结构都可以。 但是,如果我在服务器视图中安装Tomcat 8服务器(使用'采用Tomcat控件安装'模式)并部署项目,那将是一场噩梦......
我在WEB-INF/classes
中有测试资源,公共模块(jar)没有部署在WEB-INF/lib
中,应该在构建过程中集成的战争显示在WEB-INF/lib
。< / p>
如果没有在Maven配置中添加Tomcat插件,有没有办法进行干净部署?
有关信息,它是霓虹灯版本。
部署程序集仅配置src/main/*
(加上Maven依赖项)。
我们不明白Eclipse为什么不部署在target/xxx
目录中生成的最终应用程序。
答案 0 :(得分:1)
好的,我发现了问题。
Eclipse并不关心Deployment Assembly。 它混合了部署程序集和Java构建路径。
导入maven项目时,由于未知原因,项目的配置可能会很糟糕。 检查Java Build Path中声明的sources文件夹,并特别检查每个源文件夹的输出目录。
对于src/test/resources
,它设置默认输出(不是target/test-classes
)。因此,所有测试资源都被复制到target/classes
。
而且我不知道为什么他将这个目录部署到Tomcat。
在Deployment Assembly中,它只设置了这些目录:
- src/main/java -> WEB-INF/classes
- src/main/webapp -> /
- /target/m2e-wtp/web-resources -> /
- Maven dependencies -> WEB-INF/lib
- link to others modules
现在一切都很完美。