Gradle - 多项目构建中的路径

时间:2017-09-11 18:23:50

标签: gradle path build.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)中。

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

1 个答案:

答案 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...)