问题
I am a newbie to Gradle and Artifactory and I want to upload a JAR file to Artifactory.
Here is my build.gradle file:
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
}
After running the artifactoryPublish task, the build is successful as shown below:
> 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
However, there is nothing sent to Artifactory except the build info.
Any help will be much appreciated.
Edit:
As JBaruch mentioned, I've added
apply plugin: 'maven-publish'
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
}
and defaults section to artifactory task
defaults {
publications ('mavenJava')
}
Now it works.
Thanks
回答1:
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.
回答2:
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")
}
}
}
回答3:
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
回答4:
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
}
}
}
回答5:
It's also possible to use publishConfigs instead of defining publications explicitly:
artifactory {
contextUrl = artifactoryUrl
publish {
repository {
repoKey = 'libs-releases'
username = artifactory_user
password = artifactory_password
}
defaults {
publishConfigs('archives')
}
}
}
And it will automatically pick up the JAR and POM file. If you create other JARs (e.g. for sources or javadoc), all we need to do is add them to the configuration archives:
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives sourcesJar
archives javadocJar
}
来源:https://stackoverflow.com/questions/22352475/upload-artifact-to-artifactory-using-gradle