使用Gradle将工件上载到Artifactory

使用Gradle将工件上载到Artifactory,gradle,publish,artifactory,Gradle,Publish,Artifactory,我是Gradle和Artifactory的新手,我想向Artifactory上传一个JAR文件 这是我的build.gradle文件: apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'maven' apply plugin: 'artifactory-publish' groupId = 'myGroup' version = '1.0' def artifactId = projectDir.name def versi

我是Gradle和Artifactory的新手,我想向Artifactory上传一个JAR文件

这是我的
build.gradle
文件:

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'artifactory-publish'

groupId = 'myGroup'
version = '1.0'
def artifactId = projectDir.name
def versionNumber = version

artifactory {
    contextUrl = 'http://path.to.artifactory' // base artifactory url
    publish {
        repository {
            repoKey = 'libs-releases'   // Artifactory repository key to publish to
            username = 'publisher'      // publisher user name
            password = '********'       // publisher password
            maven = true
        }
    }
}

artifactoryPublish { 
    dependsOn jar
}
运行
artifactoryPublish
任务后,构建成功,如下所示:

> gradle artifactoryPublish  --stacktrace
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
:artifactoryPublish
Deploying build info to: http://path.to.artifactory/api/build

BUILD SUCCESSFUL

Total time: 7.387 secs
然而,除了构建信息之外,没有任何东西发送到Artifactory

任何帮助都将不胜感激

编辑:

正如JBaruch提到的,我已经补充了

apply plugin: 'maven-publish'

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}
并将该部分默认为artifactory任务

defaults {
   publications ('mavenJava')
}
现在它起作用了


谢谢

那是因为你没有任何
出版物
。可以使用和上载

如果您喜欢使用,则需要而不是
artifactorypublish


看一看官方文件的清单。

我把它做好了。我实际上使用的是一个已经创建的jar,因此我使用以下代码来指定要上载的jar:

publishing {
    publications {
        mavenJava(MavenPublication) {
            // from components.java
            artifact file("path/jar-1.0.0.jar")
        }
    }
}
您需要插件:

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.artifactory'
要构建项目并从artifactory检索JAR,请执行以下操作:

buildscript {
    repositories {
        maven {
            url 'http://[IP]:[PORT]/artifactory/gradle-dev'
            credentials {
                username = "${artifactory_user}"
                password = "${artifactory_password}"
            }
        }
        mavenCentral()
    }
    dependencies { classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.5.4" }
}

repositories {
    mavenCentral()
    mavenLocal()
}
人工配置:

artifactory {
    contextUrl = "${artifactory_contextUrl}"
    publish {
        repository {
            repoKey = 'gradle-dev-local'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true
        }
        defaults {
            publications('mavenJava')
        }
        publishBuildInfo = true
        publishArtifacts = true
        publishPom = true
    }
    resolve {
        repository {
            repoKey = 'gradle-dev'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true

        }
    }
}
以及出版:

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}
格拉德尔酒店

artifactory_user=publisher
artifactory_password=*****
artifactory_contextUrl=http://IP:PORT/artifactory
所以一切都很简单。如果您想上传您的jar:

gradle artifactoryPublish

这就是我使用命令
gradle clean build publish

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

group = 'com.mine'
version = '1.0.1-SNAPSHOT'

repositories{
    mavenCentral()
}

dependencies {
    compile gradleApi()
    compile localGroovy()
    compile 'com.google.guava:guava:27.0-jre'
    testCompile 'junit:junit:4.12'
    //compile 'org.apache.commons:commons-lang3:3.8.1'
}

publishing {
    repositories {
        maven {
            url = 'https://artifactory.mine.net/artifactory/my-snapshots-maven'
            credentials {
                username 'user'
                password 'password'
            }
        }
    }
    publications{
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

你好,谢谢你的回复。为了帮助其他人有同样的问题,我在帖子中添加了缺少的部分。我希望有来自artifactory的人过来。。。因为文档中没有提到
maven publish
。谢谢@JBaruch的帮助!你可以认为我是“艺术工厂的人”:官方文件中的解释。将其添加到答案中。@JBaruch仍然没有两个链接页面提到
maven publish
。我同意@Ryan的观点,这会有帮助。但是,感谢您在这里给出的答案,当前的文档示例使用的是Android Studio gradle插件v0.9,该插件已经完全过时,不推荐使用,最新版本是v1.5.0。当然,这些示例不适用于此版本:/感谢您提出的非常有用的问题和更新。有一点对我很有帮助:
defaults
实际上是在
artifactory.publish
,而不仅仅是在root
artifactory
任务中。我在博客中总结了这一点:当我尝试它时,我得到:
错误:(x,0)在SoftwareComponentInternal集合上找不到属性“java”。
请发布完整的脚本好吗?我正在编写上面的代码,用于上传我放在gradle文件夹(gradle/sample.jar)中的jar,我执行该命令,看到只上传了构建信息。我有两个疑问。首先,我们在哪里指定上传哪个jar,我们没有在任何地方指定路径。其次,如果我在artifaction.publish中写入默认部分,我会得到错误错误:(82,0)类型为“PublishingExtension”的扩展不存在。当前注册的扩展类型:[DefaultExtraPropertiesExtension,DefaultArtifactPublicationSet_装饰..任何解决方案?只要我们有
apply plugin:'maven'
pom文件就会生成,如果我们有
'apply plugin:'maven publish'
jar文件就会发布。我不必有
publishing.publications.mavenJava(MavenPublishing){from components.java}
。但是您必须拥有
默认的{publications('mavenJava');publishConfigs('archives','published')}