我正在从事结构异常的项目。它不是由构建系统构建的,而是由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项目文件?
最佳答案
Java编译器实际上并不关心源位于与它们的程序包名称匹配的文件夹中。
因此,您在Gradle中唯一需要做的就是正确地配置源目录,例如:
sourceSets {
main {
java {
srcDirs "src/database", "src/reports", "src/rest"
}
}
}
然后按照IntelliJ documentation进行导入。
关于maven - 将任意目录分配给Maven/Gradle中的软件包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55179001/