java - gradle deploy maven local
Subir las fuentes al repositorio nexus con gradle (3)
Subí exitosamente mis archivos a un repositorio de nexus usando el plugin de Maven para gradle pero no subió las fuentes. Esta es mi configuración:
uploadArchives {
repositories{
mavenDeployer {
repository(url: "http://...") {
authentication(userName: "user", password: "myPassword")
}
}
}
}
Busqué y encontré que puedo agregar las fuentes agregando una nueva tarea.
task sourcesJar(type: Jar, dependsOn:classes) {
classifier = ''sources''
from sourceSets.main.allSource
}
artifacts {
archives sourcesJar
}
Esto funciona bien, pero creo que debe haber una mejor solución al configurar el complemento de Maven, algo como uploadSource = true de esta manera:
uploadArchives {
repositories{
mavenDeployer {
repository(url: "http://...") {
authentication(userName: "user", password: "myPassword")
}
uploadSources = true
}
}
}
Nexus para guardar artefacto, no código fuente.
Para cargar el artefacto compilado hago:
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"
}
}
}
y llamar a la carga desde la consola
$ gradle upload
para código fuente use maven o repositorio git
No hay mejor solución que la que usted mismo describió. El plugin Gradle Maven está cargando todos los artefactos generados en el proyecto actual. Es por eso que tienes que crear explícitamente un artefacto de "fuentes".
La situación tampoco cambia cuando se usa el nuevo complemento de maven-publish . Aquí, también necesita definir explícitamente artefactos adicionales:
task sourceJar(type: Jar) {
from sourceSets.main.allJava
}
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
artifact sourceJar {
classifier "sources"
}
}
}
}
La razón es que gradle se trata más de ser una herramienta de compilación general y no de proyectos Java puros.
Puedes usar el gradle-nexus-plugin
Para utilizar el complemento, agregue las líneas a continuación e importe el complemento.
buildscript {
repositories {
mavenLocal()
jcenter {
url "http://jcenter.bintray.com/"
}
}
dependencies {
classpath ''com.bmuschko:gradle-nexus-plugin:2.3''
}
}
apply plugin: ''com.bmuschko.nexus''
Agregue esta sección, donde configurará la url para implementar
nexus {
sign = false
repositoryUrl = ''http://localhost:8081/nexus/content/repositories/releases/''
snapshotRepositoryUrl = ''http://localhost:8081/nexus/content/repositories/internal-snapshots/''
}
Nota: debe tener en ~ / .gradle / gradle.properties
nexusUsername = deployment
nexusPassword = deployment123