java - 具有单个 war 文件的 Spring 多模块项目,其中所有模块仅依赖于公共(public)模块

标签 java spring maven spring-integration maven-reactor

我将现有的 spring 项目拆分为多模块项目,其中每个模块仅依赖于公共(public)模块并创建一个 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

每个项目都有自己的 spring 上下文。最后一个模块导入它们中的每一个,例如

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

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

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

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

最佳答案

感谢 Artem Bilan 的回答,

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

Maven : what is the "runtime" scope purpose?

关于java - 具有单个 war 文件的 Spring 多模块项目,其中所有模块仅依赖于公共(public)模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41380197/

相关文章:

java - 从打包为 jar 文件的 java 程序中的资源中提取图像

java - 按相似元素的元素对列表进行排序

java - 检测编译的 jar 和 repo 中的代码之间的差异

java - Android - 检测移动到后台和前台的应用程序

java - 如何从 Spring 服务访问对象

java - 以编程方式失败的 Maven 测试 JUnit5 测试

java - java中从json数组中获取值

spring - 如何从类中获取一般 session 对象?

spring - Intellij IDEA 解析自定义 bean - 找不到命名空间的自定义处理程序

java - Spring,JXLS : XLS transformer not loaded,,即使依赖存在。