Gradle Maven发布插件配置引用了动态创建的Gradle任务 [英] Gradle maven publish plugin config has reference to dynamically created gradle task
本文介绍了Gradle Maven发布插件配置引用了动态创建的Gradle任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的build.gradle文件中有一个发布配置块
I have a publication config block that looks like this in my build.gradle file
publishing {
publications {
maven(MavenPublication) {
groupId "groupId"
artifactId 'artifactId'
version "4.0"
artifact "$buildDir/outputs/aar/artifact-release.aar"
artifact releaseJavadocsJar
// Generate pom file so that the artifact dependencies can be fetched automatically.
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
configurations.compile.allDependencies.each { dependency ->
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', dependency.group)
dependencyNode.appendNode('artifactId', dependency.name)
dependencyNode.appendNode('version', dependency.version)
}
}
}
}
}
请注意releaseJavadocsJar
,这是一个定义如下的gradle任务:
note the releaseJavadocsJar
, which is a gradle task defined like this:
android.libraryVariants.all { variant ->
if (variant.name == 'release') {
def taskJavadoc = task("releaseJavadocs", type: Javadoc) {
source = variant.javaCompile.source
classpath = files(((Object) android.bootClasspath.join(File.pathSeparator)))
classpath += files(variant.javaCompile.classpath.files)
}
task("releaseJavadocsJar", type: Jar) {
classifier = 'javadoc'
from taskJavadoc.destinationDir
}
}
}
当我同步gradle此行
When I sync gradle this line
artifact releaseJavadocsJar
出版物中的
抱怨
from the publication complains that
Error:(62, 0) Could not get unknown property 'releaseJavadocsJar' for object of type org.gradle.api.publish.maven.internal.publication.DefaultMavenPublication.
这意味着当gradle同步发生时,我动态创建的任务还不存在.
which means that my dynamically created task is not there yet when the gradle syncing occurs.
有什么办法解决这个问题吗?
Is there any way around this?
推荐答案
将其包装在project.afterEvalute
块中不起作用,但这确实可行:
Wrapping it in a project.afterEvalute
block didn't work, but this did:
project.tasks.whenTaskAdded { addedTask ->
if (addedTask.name == 'releaseJavadocsJar') {
// Publishing to local maven repo via 'gradlew publishToMavenLocal'.
publishing.publications {
maven(MavenPublication) {
groupId "groupId"
artifactId 'artifactId'
version "4.0"
artifact "$buildDir/outputs/aar/artifact-release.aar"
artifact releaseJavadocsJar
// Generate pom file so that the artifact dependencies can be fetched automatically.
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
configurations.compile.allDependencies.each { dependency ->
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', dependency.group)
dependencyNode.appendNode('artifactId', dependency.name)
dependencyNode.appendNode('version', dependency.version)
}
}
}
这篇关于Gradle Maven发布插件配置引用了动态创建的Gradle任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文