J'essaie d'utiliser Gradle en combinaison avec Ant pour construire nos projets OpenEdge. OpenEdge est un langage 4GL d'il y a quelques siècles. ;-)Publier autre chose qu'un jar avec gradle à Nexus
Quoi qu'il en soit, j'ai réussi à télécharger des dépendances jar, mais maintenant je suis coincé dans la façon de publier un fichier PL (Progress Library) dans un référentiel Nexus. La chose est que comme Maven, Gradle semble aussi être fait pour les projets Java.
Ceci est mon script (j'ai aussi un fichier settings.gradle avec rootProject.name = 'Stomp'):
apply plugin:'java'
apply plugin: 'maven-publish'
group 'be.mips'
version = '1.4.0-SNAPSHOT'
repositories {
/*
Gradle uses the same logic as Maven to identify the location of your local
Maven cache. If a local repository location is defined in a settings.xml,
this location will be used. The settings.xml in USER_HOME/.m2 takes precedence
over the settings.xml in M2_HOME/conf. If no settings.xml is available, Gradle
uses the default location USER_HOME/.m2/repository.
*/
mavenLocal()
maven {
credentials {
username '****'
password '****'
}
url "http://srv-ci-nexus:8082/nexus/content/repositories/MadeApplReleases/"
url "http://srv-ci-nexus:8082/nexus/content/repositories/MadeApplSnapshots/"
}
mavenCentral()
}
def stompProgressLibraryFile = file('dist/lib/STOMP.PL')
artifacts {
archives stompProgressLibraryFile
}
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
artifact stompProgressLibraryFile
}
}
repositories {
maven {
// default credentials for a nexus repository manager
credentials {
username '****'
password '****'
}
// url to the releases maven repository
url "http://srv-ci-nexus:8082/nexus/repositories/snapshots"
}
}
}
configurations {
antconf
}
dependencies {
antconf 'be.mips:mips-progress-ant-tasks:1.5.8-SNAPSHOT',
'be.mips:mips-pct:1.0-SNAPSHOT',
'ant-contrib:ant-contrib:1.0b3'
}
/* Loads the jars */
ClassLoader antClassLoader = org.apache.tools.ant.Project.class.classLoader
configurations.antconf.each {
File f -> antClassLoader.addURL(f.toURI().toURL())
}
/* Extend clean task */
clean.doFirst {
delete '_ant_rcode', 'src', 'dist'
println 'deleted directories'
}
/* Create dist/lib directory as prolib does not create directory automatically */
task init(dependsOn: clean) {
doLast{
project.file('dist/lib').mkdirs()
println 'created dist/lib'
}
}
ant.importBuild 'build.xml'
L'exécution gradle me donne la sortie publier suivante:
C: \ Espace de travail \ git-repositories \ OpenEdge \ stomp.git> grad -DDLC = C: \ OpenEdge \ 116 \ Publication DLC: generatePomFileForMavenJavaPublication: compileJava UP-TO-DATE : processResources UP-TO-DATE: classes UP-TO- DATE: jar UP-TO-DATE : publishMavenJavaPublicationToMavenRep ository Impossible de trouver les métadonnées be.mips: Stomp: 1.4.0-SNAPSHOT/maven-metadata.xml dans les régions éloignées (http://srv-ci-nexus:8082/nexus/repositories/snapshots) Ajouter http://srv-ci-nexus:8082/nexus/repositories/snapshots/be/mips/stomp/1.4.0-SNAPSHOT/stomp-1.4.0-20161227.115652-1.pom Impossible de transférer be.mips d'artefact: Stomp: pom: 1.4.0-20161227.115652 -1 de/vers à distance (http://srv-ci-nexus:8082/nexus/repositories/snapshots): Impossible écrire dans la ressource 'être/MIPS/Stomp/1.4.0-SNAPSHOT/Stomp-1.4.0-20161227.115652-1.pom' Ajouter http://srv-ci-nexus:8082/nexus/repositories/snapshots/be/mips/stomp/1.4.0-SNAPSHOT/stomp-1.4.0-20161227.115652-1.jar pourrait transfère pas l'artefact be.mips: stomp: jar: 1.4.0-20161227.115652-1 de/vers la télécommande (http://srv-ci-nexus:8082/nexus/repositories/snapshots): Impossible d'écrire dans la ressource 'be/mips/stomp/1.4.0-SNAPSHOT/stomp-1.4.0-20161227.115652-1.jar' Télécharger http://srv-ci-nexus:8082/nexus/repositories/snapshots/be/mips/stomp/1.4.0-SNAPSHOT/stomp-1.4.0-20161227.115652-1.pl Impossible de transférer l'artefact be.mips: stomp: pl: 1.4.0-20161227.115652-1 de/vers à distance (http://srv-ci-nexus:8082/nexus/repositories/snapshots): Impossible écrire dans la ressource 'être/MIPS/Stomp/1.4.0-SNAPSHOT/stomp-1.4.0-20161227.115652-1.pl' : publishMavenJavaPublicationToMavenRepository ECHEC
Échec: la génération a échoué avec une exception.
Qu'est-il arrivé: Échec de l'exécution de la tâche ': publishMavenJavaPublicationToMavenRepository'.
Échec de la publication publication 'mavenJava' au référentiel 'Maven' Impossible de déployer des artefacts: Impossible de transférer be.mips d'artefact: Stomp: pom: 1.4.0-20161227.115652-1 de/vers distance (http://srv-ci-nexus:8082/nexus/repositories/snapshots): Impossible écrire dans la ressource 'être/MIPS/Stomp/1.4.0-SNAPSHOT/Stomp-1.4.0-20161227.115652-1.pom'
Essayez: option Exécuter avec --stacktrace à obtenir la trace de la pile. Exécutez avec l'option --info ou --debug pour obtenir plus de sortie de journal.
BUILD FAILED
Temps total: 1.089 sec
La première chose que je remarque est d'avoir ces tâches java que je ne ai pas besoin. : compileJava,: processResource,: classes,: jar ...
Fondamentalement, j'avais un fichier ant build.xml qui faisait tout ce que je voulais. Mais la gestion de la dépendance chez les fourmis est très mauvaise. J'ai donc décidé d'utiliser Gradle en combinaison avec Ant. Je veux que Gradle fasse la gestion des dépendances pour moi. Jusqu'à présent, le téléchargement des dépendances semble fonctionner correctement (il faudra essayer avec un PL au lieu d'un pot). Mais publier autre chose qu'un pot, comment faites-vous cela?
Lisez beaucoup de la documentation en ligne de Gradle, mais tous les exemples semblent être basés sur java.
Thx! Déjà supprimé de components.java. Ensuite, je vais essayer le plugin de base. Étrange que de telles choses ne soient pas bien documentées dans le Guide de l'utilisateur de Gradle en ligne ... –