Gradle Artifactory 发布错误

Posted

技术标签:

【中文标题】Gradle Artifactory 发布错误【英文标题】:Gradle Artifactory publication error 【发布时间】:2015-02-18 14:13:16 【问题描述】:

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

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 推荐的链接并与代码进行比较后,我更改了插件,但仍然存在同样的问题。也许我混淆了什么? (这就是为什么我会发布整个源代码)

buildscript 
    repositories 
        maven 
            url 'http://.../artifactory/libs-release'
            credentials 
                username = "$artifactory_user"
                password = "$artifactory_password"
            
            name = "maven-main-cache"
        
    
    dependencies 
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.0.1"
    


apply plugin: 'scala'
apply plugin: 'maven-publish'
apply plugin: "com.jfrog.artifactory"

version = '1.0.0-SNAPSHOT'
group = 'com.buransky'

repositories 
    add buildscript.repositories.getByName("maven-main-cache")


dependencies 
    compile 'org.scala-lang:scala-library:2.11.2'


tasks.withType(ScalaCompile) 
    scalaCompileOptions.useAnt = false


artifactory 
    contextUrl = "$artifactory_contextUrl"
    publish 
        repository 
            repoKey = 'libs-snapshot-local'
            username = "$artifactory_user"
            password = "$artifactory_password"
            maven = true

        
        defaults
            publications ('mavenJava')
        
    


publishing 
    publications 
        mavenJava(MavenPublication) 
            from components.java
        
    

非常感谢

【问题讨论】:

【参考方案1】:

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

请查看the documentation,this answer 可能会有所帮助(注意插件名称更改)。

【讨论】:

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

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

全局构建.gradle

buildscript 
  repositories 
    jcenter()
  
  dependencies 
    classpath 'com.android.tools.build:gradle:1.5.0'
    classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4+"
  

模块构建.gradle

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 Artifactory 发布错误的主要内容,如果未能解决你的问题,请参考以下文章

使用多模块 gradle 发布 Artifactory

使用 Artifactory 和/或 Gradle 自动化版本号

Gradle 发布到 Artifactory 的特定 repo

使用 Gradle 将文件上传到 Artifactory,无需 maven 发布

使用 Gradle-Artifactory 插件发布子项目

Gradle + Jenkins + Artifactory Maven 回购?