我正在开发一个有2个模块的maven项目:" impl"这是生成一个带有资源的jar," server"这会产生服务器实施之战。
implementation
|
|-impl
| |-src
| | |-main
| | |-resources
| |-pom.xml
|
|-server
| |-src
| | |-main
| | |-java
| | |-test
| | |-java
| |-pom.xml
|
|-pom.xml
目前,当我尝试创建构建时,impl jar文件包含在服务器war文件的WEB-INF / lib目录中,因此在生成服务器war文件后,它将被解压缩并基于该文件,所有测试都在运行,一切正常。
作为一项要求,我必须将jar与war分开,以便war文件不包含任何impl的jar文件,只有将jar文件放在tomcat的lib目录中时war才有效。
我尝试在服务器的pom.xml文件中执行此操作,并将impl模块设置为提供范围,因此jar文件不再包含在war中,但现在测试失败,因为解压缩后用于运行测试的war文件,不包含该文件所需的impl jar文件。 在解压缩服务器war文件后,我可以将impl的jar文件复制到WEB-INF / lib目录中,以便测试可以正常工作,或者可以设置" impl" jar文件在运行测试时表现得像在服务器的WEB-INF / lib目录中,或者我的问题还有其他可能的解决方案吗?
答案 0 :(得分:0)
您不必将jar的范围指定为provided
。只需将其作为正常的依赖关系包含在你的战争pom.xml
中
相反,您只需将Maven War Plugin配置为排除来自war
文件的任何文件(包括jar文件)。
您必须使用<packagingIncludes>
的{{1}}配置参数。
请参阅下面的示例代码。
maven war plugin
有关详情,请查看link。