gradle 复合构建:来自包含在 ant taskdef 类路径中的构建的 jars
gradle composite build: jars from included build in ant taskdef classpath
foo 项目定义了一些在根项目中使用的 ant 任务。对于复合构建:
setting.gradle
includeBuild '../foo'
build.gradle
configurations {
foo
}
dependencies {
foo fileTree(dir : '../foo/build/libs', include: ['*.jar'])
}
ant.taskdef(name: 'foo',
classname: 'mypackage.Foo',
classpath: configurations.foo.asPath)
包含项目 foo 的 jar 应该在评估根项目之前构建,以便 jar 可以在 ant taskdef 类路径中使用。怎么样?
但任务依赖处于执行阶段,如
task run {
dependsOn gradle.includedBuild('../foo').task(':jar')
}
jar只有在任务执行后才可用,太晚了。
当包含的项目已经构建时,您可以在执行阶段配置 ant taskdef。例如
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
}
}
即使有一种方法可以配置复合子项目的评估时间依赖性,项目评估的性能也会大大降低。即使是 tasks
或 projects
这样的简单任务也需要完整构建的 ant 任务——绝对不是你想要的
foo 项目定义了一些在根项目中使用的 ant 任务。对于复合构建:
setting.gradle
includeBuild '../foo'
build.gradle
configurations {
foo
}
dependencies {
foo fileTree(dir : '../foo/build/libs', include: ['*.jar'])
}
ant.taskdef(name: 'foo',
classname: 'mypackage.Foo',
classpath: configurations.foo.asPath)
包含项目 foo 的 jar 应该在评估根项目之前构建,以便 jar 可以在 ant taskdef 类路径中使用。怎么样?
但任务依赖处于执行阶段,如
task run {
dependsOn gradle.includedBuild('../foo').task(':jar')
}
jar只有在任务执行后才可用,太晚了。
当包含的项目已经构建时,您可以在执行阶段配置 ant taskdef。例如
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
}
}
即使有一种方法可以配置复合子项目的评估时间依赖性,项目评估的性能也会大大降低。即使是 tasks
或 projects
这样的简单任务也需要完整构建的 ant 任务——绝对不是你想要的