上传艺术品到艺术品使用分级

我是一个 Gradle 和 ArtiFactory 的新手,我想上传一个 JAR 文件到 ArtiFactory。

这是我的 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
}
}
}

和默认部分到工艺任务:

defaults {
publications ('mavenJava')
}

现在成功了。

谢谢。

97113 次浏览

That's because you don't have any publications. The artifactory-publish plugin works with maven-publish plugin and uploads publications.

If you prefer working with the old maven plugin, you need artifactory plugin, not artifactory-publish.

Take a look at the Overview part in "Working with Gradle" page of the official docs.

I got this working. I was actually using an already created jar so I am using the below code to specify my jar that is to be uploaded:

publishing {
publications {
mavenJava(MavenPublication) {
// from components.java
artifact file("path/jar-1.0.0.jar")
}
}
}

You need plugins :

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.artifactory'

to build project and retrieve jars from artifactory:

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 configs:

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


}
}
}

and for publishing:

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

gradle.properties

artifactory_user=publisher
artifactory_password=*****
artifactory_contextUrl=http://IP:PORT/artifactory

So everything is just simple. If you want to upload your jar:

gradle artifactoryPublish

This is what worked for me with the command 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
}
}
}

This is how I did it with Kotlin DSL (build.gradle.kts) for my Android library:

plugins {
id("maven-publish")
// ...
}


lateinit var sourcesArtifact: PublishArtifact
lateinit var javadocArtifact: PublishArtifact
tasks {
val sourcesJar by creating(Jar::class) {
archiveClassifier.set("sources")
from(android.sourceSets["main"].java.srcDirs)
}


val dokkaHtml by getting(org.jetbrains.dokka.gradle.DokkaTask::class)


val javadocJar by creating(Jar::class) {
dependsOn(dokkaHtml)
archiveClassifier.set("javadoc")
from(dokkaHtml.outputDirectory)
}


artifacts {
sourcesArtifact = archives(sourcesJar)
javadocArtifact = archives(javadocJar)
}
}


afterEvaluate {
publishing {
repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/mahozad/android-pie-chart")
credentials {
username = project.properties["github.username"] as String? ?: System.getenv("GITHUB_ACTOR") ?: ""
password = project.properties["github.token"] as String? ?: System.getenv("GITHUB_TOKEN") ?: ""
}
}
}
publications {
create<MavenPublication>("Release") {
// Applies the component for the release build variant (two artifacts: the aar and the sources)
from(components["release"])
artifact(sourcesArtifact)
artifact(javadocArtifact)
}
}
}
}