我正在尝试将具有多个子模块的项目转换为 Maven,但我认为我对如何正确执行此操作有点困惑。
这是一个带有war包装的网络应用程序。所以这是我们的项目结构:
core(有spring、hibernate等)module1module2module3
每个都module依赖于core,因为core提供数据库访问和一些基本功能。用 Maven 的话来说,我会说
<dependency>
<groupId>a.b.c</groupId>
<artifactId>core</artifactId>
</dependency>
里面每module一个pom.xml。
下一个:module3也取决于module1. 所以我会放
<dependency>
<groupId>a.b.c</groupId>
<artifactId>module1</artifactId>
</dependency>
里面module3的pom.xml。
直到这里,我认为一切看起来都非常直接和正常(?!)。现在令人困惑的东西:
core是网络应用程序。所以最后我会编译这个core项目。- 这些
modules将为 webapp 提供一些额外的功能- 这意味着:
core某种程度上取决于每个module
- 这意味着:
- 未来的版本可能不包含
module2但module2b实际上继承了 的类module2,但可以添加/覆盖某些功能
目前我们有一个包含项目modules内部的属性(和一个额外的 xml)文件core。该文件的内容告诉 Spring 扫描更多包以查找 Controller 和 Bean。
此外还有一个 Ant 任务,它适用于文件系统路径:
<path id="libs.projects">
<dirset dir="${basedir}/../.">
<include name="libprefix*"/>
<exclude name="moduleprefix*"/>
</dirset>
</path>
libprefix它扫描以and开头的文件夹moduleprefix并编译它们。然后它jar从目标目录和一些其他文件(html、jsp、js、css等)中获取生成的文件并将它们复制到core项目目录中。
这些问题很清楚,我认为:
- 什么是最佳的项目布局(尤其是关于那些未来的版本)
- 双向项目依赖是否正确?
也许还有其他方法使用带有pom包装的 Maven 父模块?我以前从未使用过它,也不知道它的功能。但我希望你们知道如何解决这个问题;)
谢谢!