我正在做一个结构不同寻常的项目。它不是由构建系统构建的,而是由IntelliJ IDEA集成开发环境构建的。我知道,这种方法通常是很差和脆弱的。但我不得不接受这一点。
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'
}
}
}但在Java内部,它需要以下层次结构(根据src包):
└───src
└───com
└───mycompany
├───internal
└───external似乎没有办法改变Maven/Gradle的这种开箱即用的行为...嗯,我可以使用Ant作为替代(它非常灵活),但这种方法太过迫切和乏味。或者我需要为Maven/Gradle编写新的插件来生成IDEA项目文件?
发布于 2019-03-18 21:43:05
从字面上讲,Java编译器并不关心源代码是否位于与其包名称匹配的文件夹中。
因此,您在Gradle中唯一需要做的就是正确地配置源目录,如下所示:
sourceSets {
main {
java {
srcDirs "src/database", "src/reports", "src/rest"
}
}
}然后按照IntelliJ documentation进行导入。
https://stackoverflow.com/questions/55179001
复制相似问题