首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分级依赖并不像我期望的那样起作用。

分级依赖并不像我期望的那样起作用。
EN

Stack Overflow用户
提问于 2014-05-26 02:25:27
回答 1查看 388关注 0票数 2

我有两个子项目subproject1和subproject2。我想从subproject2添加一些类到subproject1,并获得subproject1.jar。下面是我的分级文件:

代码语言:javascript
复制
task copyClasses (dependsOn: [  ':subproject1:clean',  ':subproject1:classes']) {
    println "copyClasses "
    doLast {
        Task study = tasks.getByPath(':subproject1:jar')
        study.doFirst {
            copy {
                println "copy ... "
                println sourceSets.main.output.classesDir
                println project(':subproject1').sourceSets.main.output.classesDir
                from sourceSets.main.output.classesDir
                into project(':subproject1').sourceSets.main.output.classesDir
            }
        }
    }
}

task jarUpdated (dependsOn: [ clean, classes, copyClasses, ':subproject1:jar']) {
    doLast {
        println "jarUpdated"
    }
}

但是我得到了如下的构建顺序:

代码语言:javascript
复制
$ gradle jarUpdated
copyClasses
:subproject1:compileJava
:subproject1:processResources UP-TO-DATE
:subproject1:classes
:subproject1:jar
:subproject2:compileJava
:subproject2:processResources UP-TO-DATE
:subproject2:classes
:subproject2:clean
:subproject1:clean
:subproject2:copyClasses
Calling Task.doFirst(Closure) after task execution has started has been deprecated and is scheduled to be removed in Gradle 2.0. Check the configuration of task ':subproject1:jar'.
:subproject2:jarUpdated
jarUpdated

BUILD SUCCESSFUL

我的期望是:

代码语言:javascript
复制
$ gradle jarUpdated
:subproject2:clean 
:subproject2:compileJava
:subproject2:processResources UP-TO-DATE
:subproject2:classes
:subproject1:clean 
:subproject1:compileJava
:subproject1:processResources UP-TO-DATE
:subproject2:copyClasses
copyClasses
copy ... 
:subproject1:jar 
:subproject2:jarUpdated
jarUpdated

BUILD SUCCESSFUL

请你提出建议或指出我错过了什么?非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-19 04:50:52

您所要求的“最简单”的方法可能是在您的subproject1构建文件中这样做。

代码语言:javascript
复制
jar {
  from  tasks.getByPath(':subproject2:compileJava')
}

然而,这是一种非常简单的方法,有很多警告,例如

  • 子项目1不能针对子项目2类进行编译。
  • 子项目2的依赖项将不包括在内。

实际上,我建议将subproject2声明为subproject1的依赖项,并使用Peter建议的插件之一。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23861908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档