Подтвердить что ты не робот

Публикация банки и банок для источников в Artifactory из Gradle

Вот мой build.gradle:

buildscript {
    repositories {
        maven {
            url 'http://localhost:8081/artifactory/plugins-release'
            credentials {
                username = "admin"
                password = "password"
            }
            name = "maven-main-cache"
        }
    }
    dependencies {
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.0.1"
    }
}

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

version="0.0.2"
group = "mylib"

repositories {
    mavenCentral()
    add buildscript.repositories.getByName("maven-main-cache")
    maven {
        url "http://localhost:8081/artifactory/myapp-snapshots"
    }
}

dependencies {
    compile 'commons-validator:commons-validator:1.4.0'
    testCompile 'junit:junit:4.11'
}

artifactory {
    contextUrl = "http://localhost:8081/artifactory"
    publish {
        repository {
            repoKey = 'myorg-snapshots'
            username = "admin"
            password = "password"
            maven = true
        }
        defaults {
            publications ('mavenJava')
        }
    }
}

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

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

artifacts {
    archives sourcesJar
}

task dist(type: Zip, dependsOn: build) {
    classifier = 'buildreport'

    from('build/test-results') {
        include '*.xml'
        into 'tests'
    }

    from('build/reports/codenarc') {
        into 'reports'
    }

    from('build/docs') {
        into 'api'
    }

    from(sourcesJar) {
        into 'source'
    }

    from('build/libs') {
        exclude '*-sources.jar'
        into 'bin'
    }
}

Основываясь на этой текущей настройке:

  • Чтобы построить мой JAR, мне нужно запустить gradle clean build groovydoc sourcesJar dist, а затем
  • Чтобы опубликовать в Artifactory, мне нужно запустить вторую команду gradle artifactoryPublish

Две вещи, которые я хочу изменить здесь:

  • gradle artifactoryPublish публикует только мой встроенный JAR и динамически созданный POM для Artifactory. Я хотел бы также опубликовать источники JAR, которые создает моя сборка. Как; и
  • В идеале я хотел бы сделать все вышеперечисленное, просто нажав gradle publish вместо того, чтобы последовательно запускать 2 команды. Возможно ли это? Если да, то как?
4b9b3361

Ответ 1

Когда дело доходит до источника публикации, вам необходимо изменить свой script следующим образом:

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
            artifact (sourcesJar) { 
                classifier = 'sources'
            }
        }
    }
}

Когда дело доходит до одной команды, вам нужно определить зависимости между задачами. К сожалению, я не могу попробовать script, поэтому он может быть избыточным, но должен выполнять задание:

artifactoryPublish.dependsOn('clean', 'build', 'groovydoc', 'sourcesJar', 'dist')
publish.dependsOn(artifactoryPublish)