maven - 如何使用 maven-publish 和 artifactory-gradle-plugin 生成 maven-metata.xml?

标签 maven gradle artifactory maven-metadata

我用 groovy 编写了一个 Gradle 插件,并使用 Gradle 来构建它。我有一个本地网络 Artifactory 服务器,我使用 Gradle Artifactory 插件和 Gradle 中的 maven-publish 插件将结果发布到该服务器。我有另一个 Gradle 构建脚本,它依赖于这个插件作为依赖项。如果我列出特定版本的依赖项,我就可以让这一切正常工作。我尝试使用 Maven 版本范围(例如“[1.0,2.0)”),但这失败了,说找不到 maven-metadata.xml。我检查了Artifactory,果然没有它。我需要做什么来生成它,最好是在插件构建期间?

这是我的自定义 gradle 插件的 build.gradle 文件:

buildscript {
    repositories {
        maven {
            url "${artifactory_contextUrl}/plugins-release"
            credentials {
                username = "${artifactory_user}"
                password = "${artifactory_password}"
            }
        }
    }
    dependencies {
        classpath group: 'org.apache.directory.studio', name: 'org.apache.commons.io', version: '2.4'
        classpath group: 'org.jfrog.buildinfo', name: 'build-info-extractor-gradle', version: '2.0.9'
    }
}

plugins {
    id 'com.jfrog.artifactory' version '3.0.1'
}

apply plugin: 'groovy'
apply plugin: 'maven-publish'

artifactory {
    contextUrl = "${artifactory_contextUrl}"
    publish {
        repository {
            repoKey = 'plugins-snapshot-local'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true
        }
        defaults {
            publications ('mavenJava')
        }
    }
    resolve {
        repository {
            repoKey = 'libs-release'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true
        }
    }
}

dependencies {
    compile gradleApi()
    compile localGroovy()
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

我搜索了 Gradle、Artifactory 和 Maven 文档以了解 maven-metadata.xml 以及如何生成和部署。它是什么是有道理的,我可能可以手动构建一个,但我找不到任何具体解释如何使用 maven-publish 插件或artifactory-gradle-plugin 在 Gradle 中自动生成它的内容。我不想手动更新文件,因为这会破坏自动化工作,而且我不想切换到 mvn,因为我已经在 Gradle 上投入了很多。

最佳答案

必须将 groupId 添加到 publications 部分。实现后,maven-metadata.xml 文件将发布到 Artifact 存储库。

publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId = 'com.group'
        }
    }
}

关于maven - 如何使用 maven-publish 和 artifactory-gradle-plugin 生成 maven-metata.xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821866/

相关文章:

java - 使用 Arquillian/ShrinkWrap 过滤 Maven 资源

java - 更新 jSTL 1.2 中捆绑的 taglib 标准版本

gradle - 如何使Gradle任务执行两次而不显示最新状态?

Artifactory - 可以通过 LDAP 组验证管理员用户吗?

java - 除了使用 org.jfrog.buildinfo 的文件外,请勿将 *.jar 文件上传到 Artifact

artifactory - 我可以增加 Artifactory 中的下载超时吗?

maven - 为什么 Maven 会错误地将快照上传到发布存储库?

java - 使用 maven 和 WebDriverManager 在 Jenkins 上找不到 Chrome 二进制错误

maven - 如何在gradle中编写项目信息?

eclipse - 将gradle与插件 'javax.servlet'和 'war'结合使用时,如何食 eclipse 找到 'jetty'