Gradle 多项目生成中的渐变路径

Gradle 多项目生成中的渐变路径,gradle,path,build.gradle,Gradle,Path,Build.gradle,我有一个具有以下目录结构的多项目gradle项目: + project_root + module1 + src build.gradle + module2 + src build.gradle + web .. build.gradle settings.gradle 在module1/build.gradle中,我指定了以下内容: compileKotlin2Js

我有一个具有以下目录结构的多项目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\u root/build.gradle
)时,文件最终会出现在正确的目录中(
project\u root/web
),但当我意外地单独在模块上运行build时,文件会保存在模块目录中(
project\u root/module1/web


我如何修复构建脚本中的路径,以便无论运行哪个构建脚本,文件输出都将保存在完全相同的目录中(没有指定完整路径,我需要相对路径)

我不知道您的代码示例中哪个Gradle插件需要path参数,但所有常规(非第三方)Gradle插件都通过评估path参数,以避免从不同的工作目录调用Gradle时出现不同的位置

我建议也使用上述方法(或其单文件版本)。您甚至可以省略
项目
部分,因为
build.gradle
文件在项目范围内执行:

compileKotlin2Js.kotlinOptions {
    outputFile = file('web/script.js')
}

这将始终计算相对于您的
build.gradle
所属项目的项目目录的路径。要评估相对于根项目的项目目录的文件,请使用
rootProject.files(Object…
,对于相对于子项目或生成中任何项目的项目目录的路径,请使用
project(':path:To:project')。files(Object…)

我不知道在您的代码示例中,哪个Gradle插件需要path参数,但所有常规(非第三方)Gradle插件都通过评估路径参数,以避免从不同的工作目录调用Gradle时出现不同的位置

我建议也使用上述方法(或其单文件版本)。您甚至可以省略
项目
部分,因为
build.gradle
文件在项目范围内执行:

compileKotlin2Js.kotlinOptions {
    outputFile = file('web/script.js')
}

这将始终计算相对于您的
build.gradle
所属项目的项目目录的路径。要计算相对于根项目的项目目录的文件,请使用
rootProject.files(Object…
,对于相对于子项目或生成中任何项目的项目目录的路径,请使用
project(':path:To:project')。文件(Object…

这节省了我几个小时!谢谢这节省了我几个小时!谢谢