我有一个具有以下目录结构的多项目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
)中。
如何在构建脚本中修复路径,因此无论我运行哪个构建脚本,文件输出都将保存在完全相同的目录中(不指定完整路径,我想要相对路径)?
答案 0 :(得分:1)
我不知道Gradle插件在代码示例中需要路径参数,但所有常规(非第三方)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...)
。