我有一个具有以下目录结构的多项目 gradle 项目:
+ project_root
+ module1
+ src
build.gradle
+ module2
+ src
build.gradle
+ web
..
build.gradle
settings.gradle
在
module1/build.gradle
中,我指定了其他内容:compileKotlin2Js.kotlinOptions {
outputFile = "web/script.js"
}
这是一个特殊的 Kotlin JS 设置,用于指定编译后的 JS 文件的输出文件路径。
现在我的问题是,当我构建整个项目(
project_root/build.gradle
)时,文件最终位于正确的目录( project_root/web
)中,但是当我不小心单独在模块上运行构建时,文件保存在模块目录( project_root/module1/web
)中。如何修复构建脚本中的路径,以便无论我运行哪个构建脚本,文件输出都将保存在完全相同的目录中(不指定完整路径,我想要一个相对路径)?
最佳答案
我不知道你的代码示例中什么 Gradle 插件需要路径参数,但所有常规(非第 3 方)Gradle 插件都通过 Project.files(Object...)
评估路径参数从不同的工作目录调用 Gradle 时避免不同的位置。
我建议也使用上述方法(或其单个文件版本 Project.file(Object)
)。您甚至可以省略 project
部分,因为 build.gradle
文件在项目范围内执行:
compileKotlin2Js.kotlinOptions {
outputFile = file('web/script.js')
}
这将始终评估相对于您的项目的项目目录的路径
build.gradle
属于。要评估相对于根项目的项目目录的文件,请使用 rootProject.files(Object...)
, 对于相对于子项目或构建中任何项目的项目目录的路径,请使用 project(':path:to:project').files(Object...)
.
关于Gradle - 多项目构建中的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46162106/