具有单个war文件的Spring Multi Module项目,其中所有模块仅依赖于公共模块

时间:2016-12-29 12:55:32

标签: java spring maven spring-integration maven-reactor

我将现有的spring项目拆分为多模块项目,其中每个模块仅依赖于公共模块并创建一个jar文件,除了最后一个创建war文件。

这是项目结构

parent        - packaging -POM, defines module sequence 
common_mod    - common java code i.e. interface , base classes
jar-Mod-1     - depends on common
jar-Mod-2     - depends on common
jar-Mod-3     - depends on common
war-Mod       - depends only on common, this contains java and webapp code

每个项目都有自己的春季背景。并且最后一个模块导入它们中的每一个。例如

<import resource="classpath*:common-config.xml"/>

现在我想创建一个包含所有模块jar的单一战争,但是没有将每个模块定义为最终战争模块中的依赖。如果我指定相同,那么开发人员也可以在war模块中编写模块特定的代码(比如Jar Mod 1模块),我想避免使用它。

现在当我创建战争时,它只包含公共模块的jar,因为它在war模块中被指定为依赖。

因此,当我运行这个项目时,它会抱怨从其他模块中找不到的bean,这很明显,因为war不包含其他模块的jar。

1 个答案:

答案 0 :(得分:2)

感谢Artem Bilan的回答,

您将在war模块中添加模块依赖项,但是如果您想在编译时忽略它们,但需要在最终WAR中使用该模块的jar(这正是我想要的),您必须定义该依赖关系的范围为runtime

Maven : what is the "runtime" scope purpose?