Gradle人工制品发布错误

Gradle人工制品发布错误,gradle,artifactory,Gradle,Artifactory,我是Gradle和Artifactory的新手,我使用了一个无法正常工作的示例,我收到了以下错误消息: Extension of type 'PublishingExtension' does not exist. Currently registered extension types: [DefaultExtraPropert iesExtension, DefaultArtifactPublicationSet_Decorated, ReportingExtension_Decorated

我是Gradle和Artifactory的新手,我使用了一个无法正常工作的示例,我收到了以下错误消息:

Extension of type 'PublishingExtension' does not exist. Currently registered extension types: [DefaultExtraPropert iesExtension, DefaultArtifactPublicationSet_Decorated, ReportingExtension_Decorated, DefaultProjectComponentContai ner_Decorated, DefaultProjectSourceSet_Decorated, DefaultBinaryContainer_Decorated]
我在这行有一个错误:

defaults{
    publications ('mavenJava')
}
有人可以帮我解决这个问题,我已经被困在这个问题上很久了

在按照JBaruch的建议查看链接并与代码进行比较后,我更改了插件,但仍然存在相同的问题。也许我搞混了什么? (这就是我将发布全部源代码的原因)


非常感谢

您没有应用
maven publish
插件,该插件预计将与
artifactory
插件一起出现


请看一看,也可能有帮助(注意插件名称的变化)。

由于Artifactory文档使用的是过时的Android Studio和gradle插件版本,因此我在这方面浪费了很多时间,以下是我与AS 1.5.1和gradle 1.5.0的工作配置:

global build.gradle

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:1.5.0'
    classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4+"
  }
}
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'com.android.library'
apply plugin: 'maven-publish'

publishing{
  publications {
    maven(MavenPublication)  {
        groupId packageName
        version = libraryVersion
        artifactId project.getName()
        artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
    }
  }
}

artifactory {
  contextUrl = // yours
  publish {
    repository {
        // The Artifactory repository key to publish to
        repoKey = 'libs-release-local'
        username = // yours
        password = // yours
    }
    defaults {
        publishArtifacts = true
        publications ('maven')

        // Properties to be attached to the published artifacts.
        properties = ['qa.level': 'basic', 'dev.team': 'core']
        // Publish generated POM files to Artifactory (true by default)
        publishPom = true
    }
  }
}
模块构建.gradle

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:1.5.0'
    classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4+"
  }
}
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'com.android.library'
apply plugin: 'maven-publish'

publishing{
  publications {
    maven(MavenPublication)  {
        groupId packageName
        version = libraryVersion
        artifactId project.getName()
        artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
    }
  }
}

artifactory {
  contextUrl = // yours
  publish {
    repository {
        // The Artifactory repository key to publish to
        repoKey = 'libs-release-local'
        username = // yours
        password = // yours
    }
    defaults {
        publishArtifacts = true
        publications ('maven')

        // Properties to be attached to the published artifacts.
        properties = ['qa.level': 'basic', 'dev.team': 'core']
        // Publish generated POM files to Artifactory (true by default)
        publishPom = true
    }
  }
}

我应用了插件:“maven publish”作为示例,并检查了插件的版本是否正确,因为正如您所说,名称发生了变化(在本例中为com.jfrog.artifactory),但仍然没有结果。我发布了我的源代码供大家参考,谢谢。我尝试了所有类型的插件,但仍然没有成功,并且在出版物(mavenJava)参考上一直存在同样的问题。可能与maven存储库有关?我今天也在尝试使用gradle&android的artifactory插件,错误与您相同。位于的artifactory示例是最新的android gradle插件后面的几个版本…也没有“maven publish”插件。伙计们,你们使用的是哪个gradle版本?问题解决了我的错误是我没有在根上使用main build.gradle,因为我有不同的模块,并且我是从其中一个模块运行发布的。代码很完美,非常感谢JBaruch。我的gradle版本是2.1