多模块java项目应该有多个gradle项目吗

qq24tv8q  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(264)

我开始学习java模块化,我想知道一个多模块的项目是否应该分为子模块项目。如果是或不是这样,目录结构会是什么样子?我见过一些非渐变项目结构的矛盾例子,例如:

reverse/dns/module/module-info.java 
                ./packages..
reverse/dns/module/module-info.java 
                ./packages..

reverse.dns.module/
            module-info.java // module-info is in the root directory and its name corresponds to parent folder
            reverse/dns/module/packages..

它看起来像这样吗?
真的,如果我有两个模块,我只想知道如何构建一个gradle项目。我也打算使用jlink来创建与任何内容冲突的图像。

6vl6ewon

6vl6ewon1#

我问了一个不同的问题:
我使用的是gradle和jlink插件,有一个应用程序我想分成两个模块,模块应该在src/main/java目录下,还是应该重构为src/mod1/和src/mod2?由此产生的另一个问题是测试以及在哪里放置junit测试类。我想知道所有这些的目录结构。谢谢!
致nick maiorano并收到以下回复:
对于第一个问题,java编译器和运行时对此没有意见。它们支持两种类型的目录结构。但是像intellij和eclipse这样的java编辑器会迫使您为每个模块拥有独立的源代码根。如果您计划让不同的团队维护他们自己的模块,那么您必须有独立的根,并且您将使用他们的模块,就像使用第三方库一样,通过jar或jmod文件具有模块依赖性。否则,您可以在一个源代码下拥有不同的模块,但您将与eclipse/intellij的模块支持作斗争(但这是可能的)。
你的第二个问题要简单得多:单元测试类应该和他们的测试对象在同一个模块中。他们应该可以访问模块中的每个类,所以他们是模块的一部分是有意义的。它们应该位于一个单独的目录中,但与它们的测试主题的包名相同(这样就不会阻止它们访问包私有方法)。
这符合我决定通过拥有两个独立的gradle子项目来构建应用程序的方式,每个子项目都有自己的src/main/java目录。我的最终目录结构如下所示:

wit-core/
├── build.gradle
├── core.vim
└── src
    ├── main
    │   └── java
    │       ├── dev
    │       │   └── joshpetit
    │       │       └── wit
    │       │           └── core
    │       │               ├── base
    │       │               ├── interpret
    │       │               └── model
    │       └── module-info.java
    └── test
        └── java
            └── dev
                └── joshpetit
                    └── wit
                        └── core
                            ├── base
                            └── utils
wit-gui/
├── build.gradle
├── Session.vim
└── src
    ├── main
    │   └── java
    │       ├── dev
    │       │   └── joshpetit
    │       │       └── wit
    │       │           └── gui
    │       │               └── launcher
    │       └── module-info.java
    └── test
        └── java
            └── dev
                └── joshpetit
                    └── wit
                        └── gui
                            └── launcer

非常感谢和我一起解析这个问题的人!
如果还有其他人对此感到疑惑,我建议遵循@franciscomatea的建议并参考junit的项目结构。

相关问题