多项目构建中的Gradle – 路径

我有一个多项目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插件需要代码示例中的路径参数,但所有常规(非第三方)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...) ,使用project(':path:to:project').files(Object...)