Загрузите источники в хранилище 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