我正在研究结构异常的项目。它不是由构建系统构建的,而是由IntelliJ IDEA IDE构建的。我知道,这种方法通常很差而且很脆弱。但是我必须忍受那个。
IDEA的主要功能是可以将任意软件包分配给目录。我正在从事的项目在很大程度上依赖此功能(该项目非常复杂且古老)。
我创建了简化的项目只是为了说明。例如,可以保留两个属于reports
包的目录database
和com.mycompany.internal
并将com.mycompany.external
包分配给rest
目录:
在磁盘上的结构如下:
└───src
├───database
├───reports
└───rest
据我所知,Maven和Gradle之类的构建系统可以处理多个源根。例如,在Gradle中可以指定多个目录:
sourceSets {
main {
java {
srcDirs 'src'
srcDirs 'src1'
srcDirs 'src2'
}
}
}
但是在src
内部,Gradle需要以下层次结构(根据Java软件包):
└───src
└───com
└───mycompany
├───internal
└───external
似乎没有办法立即改变Maven / Gradle的这种行为...嗯,我可以使用Ant作为替代方法(它非常灵活),但是这种方法将非常必要和繁琐。还是我需要为Maven / Gradle编写新的插件来生成IDEA项目文件?
答案 0 :(得分:2)
Java编译器实际上并不关心源位于与它们的程序包名称匹配的文件夹中。
因此,您在Gradle中唯一需要做的就是正确地配置源目录,例如:
sourceSets {
main {
java {
srcDirs "src/database", "src/reports", "src/rest"
}
}
}
然后按照IntelliJ documentation进行导入。