我正在尝试将具有多个子模块的项目转换为 Maven,但我认为我对如何正确执行此操作有点困惑。
这是一个带有war
包装的网络应用程序。所以这是我们的项目结构:
core
(有spring、hibernate等)module1
module2
module3
每个都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 父模块?我以前从未使用过它,也不知道它的功能。但我希望你们知道如何解决这个问题;)
谢谢!