私は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')
}
今では動作します。
ありがとう
これは、publications
がないためです。 artifactory-publish
プラグイン は maven-publish
プラグイン で動作し、 publications
をアップロードします。
古いMavenプラグイン を使用する場合は、artifactory-publish
ではなく artifactory
plugin が必要です。
公式ドキュメントの 「Gradleの操作」ページの概要部分 をご覧ください。
私はこれを機能させました。私は実際に既に作成された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'
プロジェクトをビルドし、アーティファクトから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の設定:
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
}
}
}
gradle.properties
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
}
}
}
パブリケーションを明示的に定義する代わりに、publishConfigs
を使用することもできます。
artifactory {
contextUrl = artifactoryUrl
publish {
repository {
repoKey = 'libs-releases'
username = artifactory_user
password = artifactory_password
}
defaults {
publishConfigs('archives')
}
}
}
そして、JARおよびPOMファイルを自動的に取得します。他のJAR(たとえば、ソースまたはjavadoc用)を作成する場合は、それらを構成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
}