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.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/

相关文章:

gradle - Gradlew无法保留3G堆内存。属性设置为1G

java - 使用 Java 8 构建 Gradle

c# - 公共(public)交通网络中的路由算法

linux - make : Command not found, 但命令存在?

python - 在 Windows 上使用 os.path.join 混合斜线

maven - gradle Maven插件-如何自定义Maven上传的文件名称

android - 有没有办法从根 build.gradle 文件共享 buildTypes 和 signingConfigs?

java - 如何将自定义 Antlr 输出路径添加到 Gradle 中的主源集?

android - gradle中的版本控制冲突

bash - 如何添加带有属性的gradle exec任务?