Загрузите источники в хранилище nexus с помощью gradle

Я успешно загрузил свои банки в репозиторий nexus, используя плагин maven для gradle, но не загрузил источники. Это моя конфигурация:

uploadArchives {
    repositories{
        mavenDeployer {
            repository(url: "http://...") {
                 authentication(userName: "user", password: "myPassword")
            }
        }
    }
}

Я искал и обнаружил, что могу добавить источники, добавив новую задачу.

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

artifacts {
     archives sourcesJar
}

Это отлично работает, но я думаю, что должно быть лучшее решение, настроив плагин maven, например uploadSource = true:

uploadArchives {
    repositories{
        mavenDeployer {
            repository(url: "http://...") {
                 authentication(userName: "user", password: "myPassword")
            }
            uploadSources = true
        }
    }
}

Ответ 1

Нет лучшего решения, чем вы сами описали. Плагин gradle maven загружает все артефакты, созданные в текущем проекте. Вот почему вы должны явно создавать артефакт "Источники".

Ситуация также не меняется при использовании нового плагина maven-publish. Здесь вам также необходимо явно определить дополнительные артефакты:

task sourceJar(type: Jar) {
    from sourceSets.main.allJava
}

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

            artifact sourceJar {
                classifier "sources"
            }
        }
    }
}

Причина в том, что gradle больше связан с тем, что он является общим инструментом сборки и не связан с чистыми Java-проектами.

Ответ 2

Вы можете использовать gradle-nexus-plugin

Чтобы использовать плагин, добавьте строки ниже и импортируйте плагин

buildscript {
     repositories {
         mavenLocal()
         jcenter {
            url "http://jcenter.bintray.com/"
        }
     }
     dependencies {
         classpath 'com.bmuschko:gradle-nexus-plugin:2.3'
     }
 }

apply plugin: 'com.bmuschko.nexus'

Добавьте этот раздел, где вы будете настраивать URL для развертывания

nexus {
     sign = false
     repositoryUrl = 'http://localhost:8081/nexus/content/repositories/releases/'
     snapshotRepositoryUrl = 'http://localhost:8081/nexus/content/repositories/internal-snapshots/'
 }

Примечание: Вы должны иметь в ~/.gradle/ gradle.properties

nexusUsername = deployment
nexusPassword = deployment123

Ответ 3

Nexus для сохранения артефакта, а не исходного кода.

для загрузки скомпилированного артефакта:

apply plugin: 'java'
apply plugin: 'maven'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://nexus-server:8081/nexus/content/repositories/snapshots") {
                authentication(userName: "admin", password: "secret")
            }
            pom.version = "1.0.0-SNAPSHOT"
            pom.artifactId = "${project.name}"
            pom.groupId = "path.to.artifact"
        }
    }
}

и вызывать загрузку с консоли

$ gradle upload

для исходного кода используйте maven или хранилище git