【问题标题】:Gradle dependency to project in buildscriptGradle 依赖于 buildscript 中的项目
【发布时间】:2013-06-07 15:50:19
【问题描述】:

如果可以在 Gradle 中使用其他项目中的任务,我会试着弄清楚。假设 ProjectB 是一个 src/main/groovy 包含 com.MyTask 的项目,具有父 ProjectA

在 ProjectC 的 build.gradle 中,也有父 ProjectA:

buildscript {
    dependencies{
        project(':ProjectB')
    }
}

这似乎是合法的,因为在“project(:'ProjectB')”中引入一个错字很难。同样失败的是引入这一行:

import com.MyTask

项目引用在 buildscript 闭包中无效吗?还尝试将 com.MyTask 移动到 buildSrc/src/main/groovy 并获得相同的成功。

【问题讨论】:

    标签: gradle


    【解决方案1】:

    来自 Gradle 文档15.4. Adding dependencies to a task

    示例 15.13。添加对另一个项目的任务的依赖

    build.gradle
    
    project('projectA') {
        task taskX(dependsOn: ':projectB:taskY') << {
            println 'taskX'
        }
    }
    
    project('projectB') {
        task taskY << {
            println 'taskY'
        }
    }
    

    【讨论】:

    • 好电话!但我可能没有足够清楚地说明问题。我要使用的不是已定义的任务,而是在类路径上创建的任务。例如,将 ProjectC 导出到 mavenLocal() 并将其导入 ProjectB 中的 buildscript 工作正常。然后 MyTask 可用。
    • 还尝试在 ProjectC 中定义一个“MyTask”并在 ProjectB 中依赖它,但我无法做到,因为“MyTask”在 src/main/gradle 而不是 buildSrc/src/main/毕业。
    • @OleChristianLangfjæran 你看过第 15.2 章吗?你试过tasks.getByPath('MyTask')
    • 又是一个好的提示,但没有奏效。原因是任务在配置时不可用,因为我正在构建一个包含任务的独立项目。解决方案是编辑独立项目的源集。后来发现这个问题已经在 Adam Murdoch、Luke Daley 和 Steve Ebersole 之间进行了彻底的讨论:gradle.1045684.n5.nabble.com/…
    【解决方案2】:

    对我有用的解决方案是使“com.MyTask”在配置时和源中都可用。 ProjectA(父级)将此添加到 buildSrc/build.gradle 的 sourceSets 中:

    sourceSets{
        main{
            groovy{
                srcDir 'ProjectB/src/main/groovy'
            }
        }
    }
    

    现在 ProjectC 和所有其他项目都可以使用 MyTask。同时与ProjectB的最终jar捆绑在一起。

    Adam Murdoch、Luke Daley 和 Steve Ebersole 之间也彻底讨论了这个问题:http://gradle.1045684.n5.nabble.com/buildSrc-as-a-regular-project-td5677255.html

    编辑:操纵父 buildSrc 比独立项目更聪明。这样一来,IntelliJ 就很幸运了。

    【讨论】:

    • “IntelliJ 不喜欢它”哈哈,不,我打赌它不喜欢。
    • 哈哈!很抱歉在您评论@mike-rylander 时编辑答案!
    • 感谢您了解如何让 IntelliJ 开心。
    猜你喜欢
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2020-07-13
    相关资源
    最近更新 更多