Ant,Gradle hybrid将jar和pom发布到Artifactory

时间:2018-02-01 22:34:13

标签: java maven gradle groovy ant

我尝试使用Ant进行构建,然后使用Gradle将我的jar和pom发布到Artifactory,但有些运气不好。希望还没有耗尽,因为我需要/希望这种情况发生。

task createPom() {
    pom {
        project {
            groupId "${groupId}"
            artifactId 'pluginmanager'
            version "${version}"
        }
    }.writeTo('pom.xml')
}

def pomfile = file('pom.xml')

task publishPom(type: Upload) {
    dependsOn 'createPom'
    artifacts {
        archives pomfile
    }
    repositories {
       "${artifactory_url}"
    }
}

artifactory() {
    publish {
        repository {
            repoKey = "${repoKey}"
        }
    }
}

artifactoryPublish {
    dependsOn 'publishPom'
}

现在我很明白我是怎么写的(' pom.xml')然后创建(def)pomfile但这就是我迷失在如何做到这一点的地方工作。在writeTo文件中,当我将档案定义为' pomfile.xml'时,我无法传递pomfile变量和publishPom工件块。我得到一个"无法转换提供的类型为PublishArtifact的对象的表示法:pom.xml"错误,它告诉我使用"文件实例"。但是,当我传入pomfile变量时,我收到一个新错误,"没有为属性'工件指定值。'。"

My Gradle任务createPom()有效,但我无法运行publishPom()。这一点现在可能很明显了。

1 个答案:

答案 0 :(得分:1)

Maven Publishing plugin已经负责生成POM并提供发布任务。您的方法尝试手动创建该代码。

您可以执行以下操作:

apply plugin: 'maven-publish'

ext {
    jarFileCreatedByAnt = file('my.jar')
    artifactoryUrl = 'http://localhost:4001/artifactory'
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId 'org.gradle.sample'
            artifactId 'pluginmanager'
            version '1.1'
            artifact jarFileCreatedByAnt
        }
    }
    repositories {
        maven {
            url artifactoryUrl
        }
    }
}

然后运行任务publishMavenJavaPublicationToMavenRepository。当然,JAR文件需要预先存在。