我有一个由 Gradle 6.7.1 构建的多模块 Java(Spring) 项目。而我在Jetbrain IDEA中使用开发。文件结构如下:
root
|--orm
| +---hibernates
|
|--web
|--mvc
|--rest
然后,我在我的模块项目中尝试了一些代码,如下所示,我得到的都是根路径(/home/user/IdeaProjects/root/
),而不是模块路径(/home/user/IdeaProjects/root/web/mvc
)。如何获取模块路径 (/home/user/IdeaProjects/root/web/mvc
) ?
new File("").getAbsolutePath()
答案 0 :(得分:1)
例如,假设您的 mvc 项目在根文件夹中的 setting.gradle
中设置如下:
include 'mvc'
project(':mvc').projectDir = new File('./web/mvc')
然后,要获取路径 /home/user/IdeaProjects/root/web/mvc
,请尝试以下操作:
println project(':mvc').projectDir
将打印:
<块引用>/home/user/IdeaProjects/root/web/mvc
答案 1 :(得分:0)
基于@ToYonos 的回答。我们可以这样做:
settings.gradle
获取每个模块的项目路径。info.properties
中写入一个键值。Because struct of my project is:
root
|--orm
| +---mybatis
| +---jpa
| +---...
|--web
+--mvc
+--rest
+--...
所以,我应该循环两次以获取模块名称。我排除了没有 build.gradle
的项目。
file("${rootDir}").eachDir {
it.eachDirMatch(~/.*/) {
if (it.list().contains("build.gradle")) {
def moduleName = "${it.parentFile.name}:${it.name}"
println " ${moduleName}"
include moduleName
}}}
然后,读写info.properties
。
import java.nio.file.Paths
// read
def project_dir = project(":${moduleName}").projectDir
def propFile = Paths.get("${project_dir}", "src", "main","resources","info.properties").toFile()
propFile.createNewFile()
Properties props = new Properties()
propFile.withInputStream {
props.load(it)
}
// write
props.setProperty("project.dir","$project_dir")
props.store propFile.newWriter(), null