Статьи

Публикация JAR-артефакта с использованием Gradle to Artifactory

Поэтому я потратил (инвестировал) день или два, чтобы узнать, как опубликовать JAR с помощью Gradle на локально работающем сервере Artifactory . Я использовал плагин Gradle Artifactory для публикации. Я был потерян в бесконечном цикле включения различных версий различных плагинов и выполнения всевозможных задач. Да, я читал документацию раньше. Это просто неправильно. Возможно, в это время стало лучше.

Выполнение следующего загрузило только информацию о сборке. Артефакт (JAR) не был опубликован.

1
2
3
4
5
6
7
8
$ gradle artifactoryPublish
:artifactoryPublish
Deploying build info to: http://localhost:8081/artifactory/api/build
Build successfully deployed. Browse it in Artifactory under http://localhost:8081/artifactory/webapp/builds/scala-gradle-artifactory/1408198981123/2014-08-16T16:23:00.927+0200/
 
BUILD SUCCESSFUL
 
Total time: 4.681 secs

Этот парень спас меня, я хотел поцеловать его: StackOverflow — загрузить артефакт в артефакт, используя gradle

Я предполагаю, что у вас уже есть Gradle и Artifactory. У меня был проект Scala, но это не имеет значения. Ява должна быть просто в порядке. Я запустил Artifactory локально на порту 8081. Я также создал нового пользователя с именем devuser которого есть разрешения на развертывание артефактов.

Короче говоря, это мой последний build.gradle скрипта build.gradle :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
buildscript {
    repositories {
        maven {
            credentials {
                username = "${artifactory_user}"
                password = "${artifactory_password}"
            }
            name = "maven-main-cache"
        }
    }
    dependencies {
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.0.1"
    }
}
 
apply plugin: 'scala'
apply plugin: 'maven-publish'
apply plugin: "com.jfrog.artifactory"
 
version = '1.0.0-SNAPSHOT'
group = 'com.buransky'
 
repositories {
    add buildscript.repositories.getByName("maven-main-cache")
}
 
dependencies {
    compile 'org.scala-lang:scala-library:2.11.2'
}
 
tasks.withType(ScalaCompile) {
    scalaCompileOptions.useAnt = false
}
 
artifactory {
    contextUrl = "${artifactory_contextUrl}"
    publish {
        repository {
            repoKey = 'libs-snapshot-local'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true
 
        }      
        defaults {
            publications ('mavenJava')
        }
    }
}
 
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

Я сохранил URL контекста Artifactory и учетные данные в ~/.gradle/gradle.properties и это выглядит так:

1
2
3
artifactory_user=devuser
artifactory_password=devuser
artifactory_contextUrl=http://localhost:8081/artifactory

Теперь, когда я снова запускаю ту же задачу, это то, что я хотел. Файл Maven POM и архив JAR развернуты в Artifactory:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
$ gradle artifactoryPublish
:generatePomFileForMavenJavaPublication
:compileJava UP-TO-DATE
:compileScala UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:artifactoryPublish
Deploying artifact: http://localhost:8081/artifactory/libs-snapshot-local/com/buransky/scala-gradle-artifactory/1.0.0-SNAPSHOT/scala-gradle-artifactory-1.0.0-SNAPSHOT.pom
Deploying artifact: http://localhost:8081/artifactory/libs-snapshot-local/com/buransky/scala-gradle-artifactory/1.0.0-SNAPSHOT/scala-gradle-artifactory-1.0.0-SNAPSHOT.jar
Deploying build info to: http://localhost:8081/artifactory/api/build
Build successfully deployed. Browse it in Artifactory under http://localhost:8081/artifactory/webapp/builds/scala-gradle-artifactory/1408199196550/2014-08-16T16:26:36.232+0200/
 
BUILD SUCCESSFUL
 
Total time: 5.807 secs

Счастливый конец:

Скриншот-от-2014-08-16-163207