2014-05-14 15 views
9

Ho un semplice esempio di avvio a molla (1.0.2) (basato su http://spring.io/guides/gs/rest-service/) utilizzando Gradle (1.12) per creare un file jar.Impossibile pubblicare sul repository Maven locale quando si utilizza Gradle e Spring Boot

Sto cercando di costruire e pubblicare al mio repo Maven locale utilizzando il Maven o maven-pubblicare i plugin Gradle ma sto ottenendo l'errore:

Unable to initialize POM pom-default.xml: Failed to validate POM for project ngdc.sample:hello-springboot at /Users/jcc/Documents/stash/hello-springboot/build/poms/pom-default.xml

e non capisco perché. versione, gruppo e archivi NomeBase sono tutti specificati in build.gradle. Un progetto simile che non si basa su SpringBoot funziona correttamente.

Qualcuno può suggerire quale potrebbe essere il problema?

Grazie!

--john

+1

'plugin artifactory' richiede' plugin maven', e 'Artifactory-publish' richiede' plugin Maven-publish' e dalla tua domanda sembra 'conflitti di plugin primavera-boot' con loro. Quindi, probabilmente hai bisogno di iniziare a capirlo. Potrebbe essere una buona idea riformulare la domanda o richiederne una aggiuntiva riguardante l'aggiunta di plug-in maven al file di avvio. – JBaruch

risposta

11

Potrebbe essere necessario per assicurare che il pom genitore o la gestione delle dipendenze è specificato come pure (dipende dalla configurazione, ma se si utilizza il plugin Primavera Boot Gradle probabilmente hanno bisogno di esso). Esempio qui: https://github.com/spring-projects/spring-boot/blob/master/spring-boot-integration-tests/spring-boot-gradle-tests/src/test/resources/installer.gradle

install { 
    repositories.mavenInstaller { 
     pom.project { 
      parent { 
      groupId 'org.springframework.boot' 
      artifactId 'spring-boot-starter-parent' 
      version "${project.bootVersion}" 
      } 
     } 
    } 
} 
+0

Ho avuto esattamente lo stesso problema e questo l'ha risolto. Ho dovuto hardcode $ {project.bootVersion} però. – Ryan

+0

Perché abbiamo bisogno di una configurazione così strana. Cerco di impostare 'pom.project.parent' nel mio progetto e non è riuscito. Quindi copio la tua soluzione e ha funzionato. – janisz

+0

Che cosa dovremmo cambiare se usiamo il plugin di pubblicazione di Maven? Lo snippet di codice sopra non funziona in questo caso. –

0

Questo mi dice il vostro manufatto (vaso o la guerra) è stato creato, ma la validazione del pom che accompagna sta fallendo. Per un artefatto maven valido è necessario groupdId, artifactId e version ....
Che si traducono in gradle group, archivesBaseName e version. Assicurati di avere queste tre proprietà impostati o configurati sul manufatto e si potrebbe ottenere un pò di fortuna :-)

ad es ..
archivesBaseName = 'xcxcxcxc'
gruppo = "com.blah.xxdddd"
version = '#. #. #'
...

1

Quando il Gradle Plugin Primavera avvio senza versioni di dipendenza nella sezione dependency{...}, il pom viene generato senza la versione per la primavera Boot ecc

S o al momento è richiesto per creare la relazione con il pom genitore da solo per tutti i compiti Maven realted parent { groupId 'org.springframework.boot' artifactId 'spring-boot-starter-parent' version "${project.bootVersion}" }

Vedi https://github.com/spring-projects/spring-boot/issues/1716

1

mi capita di incontrare lo stesso problema qui. Grazie a @cjstehno, e riassumerò il mio file di build qui.

1) se si utilizza il plug-in Maven, la guida ufficiale è disponibile per questo.

http://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-gradle-plugin.html#build-tool-plugins-gradle-publishing-artifacts-to-a-maven-repository

2) se si sta utilizzando Maven-pubblicano plugin, è possibile seguire gli script di seguito.

Inoltre, poiché l'avvio a molla richiede la propria procedura di pacchetto prima della pubblicazione (come ad esempio bootRepackage e assemblare), in questo modo la pubblicazione dipende dall'attività di compilazione.

buildscript { 
    dependencies { 
     classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.1.9.RELEASE' 
    } 
} 

apply plugin: 'spring-boot' 
apply plugin: 'maven-publish' 

group = '<some group id>' 
version = '<some version with -SNAPSHOT>' 

jar { 
    baseName = '<jar base name>' 
} 

publish.dependsOn build 

publishing { 
    publications { 
     mavenJar(MavenPublication){ 
      pom.withXml { 
       def parentNode = asNode().appendNode('parent') 
       parentNode.appendNode('groupId','org.springframework.boot') 
       parentNode.appendNode('artifactId','spring-boot-starter-parent') 
       parentNode.appendNode('version','1.1.9.RELEASE') 
      } 
      from components.java 
     } 
    } 
} 

publishing { 
    repositories { 
     maven { 
      credentials { 
       username 'admin' 
       password 'admin123' 
      } 
      url "http://<nexus server>:8081/nexus/content/repositories/snapshots/" 
     } 
    } 
} 
Problemi correlati