Maven配置在模块之间共享资源

时间:2017-05-01 12:26:28

标签: java maven jar war

我正在开发一个有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目录中,或者我的问题还有其他可能的解决方案吗?

1 个答案:

答案 0 :(得分:0)

您不必将jar的范围指定为provided。只需将其作为正常的依赖关系包含在你的战争pom.xml中 相反,您只需将Maven War Plugin配置为排除来自war文件的任何文件(包括jar文件)。
您必须使用<packagingIncludes>的{​​{1}}配置参数。 请参阅下面的示例代码。

maven war plugin

有关详情,请查看link