gradle复合构建:来自ant taskdef类路径的包含构建的jar

时间:2017-07-13 00:00:38

标签: gradle ant build composite

Project foo定义了根项目中使用的一些ant任务。对于复合构建:

setting.gradle

justify-content: space-between;

的build.gradle

ul {
   display: flex;
   justify-content: space-between;
}

应该在评估根项目之前构建包含项目foo的jar,以便jar可以在ant taskdef类路径中使用。怎么样?

但是任务依赖性处于执行阶段,如

includeBuild '../foo'

只有在执行任务后,jar才会可用,为时已晚。

1 个答案:

答案 0 :(得分:0)

您可以在执行阶段配置ant taskdef,此时已构建包含的项目。 e.g。

task run {
    dependsOn gradle.includedBuild('../foo').task(':jar')
    doFirst {
        ant.taskdef(name: 'foo',
            classname: 'mypackage.Foo',
            classpath: configurations.foo.asPath)

        // call your ant target as usual
    }
}

即使有一种方法可以在复合子项目上配置评估时依赖性,您的项目评估也会有很大的性能下降。即使像tasksprojects这样的简单任务也需要完整构建ant任务 - 绝对不是你想要的东西