2015-12-29 9 views
8

La versione dell'applicazione definita in banner.txt non viene visualizzata sulla console quando si esegue l'applicazione. Esso è definito in base alla docs of Spring BootLa versione dell'applicazione non viene visualizzata in Spring Boot banner.txt

${application.version} 

Il progetto utilizza la molla-boot-starter-genitore come pom genitore (impostazione del progetto di base da start.spring.io)

+0

Questo ha funzionato bene per me. Ho generato un progetto da start.spring.io. Poi, ho aggiunto il file src/main/resources/banner.txt, con i contenuti che fanno riferimento a '$ {application.version}'. Quindi, ho eseguito il comando './mvnw clean package'. Quindi, ho eseguito 'java -jar target/demo-0.0.1-SNAPSHOT.jar'. Ha stampato '0.0.1-SNAPSHOT' come previsto. Se questo non funziona per te, vuoi fornire maggiori dettagli, come forse il tuo file banner.txt? –

+0

Ok, la versione viene stampata se costruisco il progetto ed eseguo tramite java -jar. Ma se avvio l'applicazione all'interno del mio IDE (IntelliJ IDEA) la versione non verrà stampata. Qual è il problema lì? – pas2al

risposta

13

Ok, la versione viene stampato se costruisco il progetto ed eseguirlo tramite java-jar. Ma se avvio l'applicazione all'interno del mio IDE (IntelliJ IDEA) la versione non verrà stampata.

Secondo la documentazione Stivale Primavera sul Customizing the Banner, il valore di ${application.version} è tratto dal manifesto vaso.

Il numero di versione dell'applicazione dichiarata in MANIFEST.MF. Ad esempio Implementation-Version: 1.0 è stampato come 1.0.

Quando si esegue da un IDE, è tipico che l'esecuzione si verifichi con i file di classe compilati dall'IDE. L'IDE in genere non passa attraverso un intero ciclo di costruzione dell'intero vaso con un manifest. Pertanto, non è disponibile MANIFEST.MF in fase di runtime per sostituire il valore di ${application.version} e il token non viene visualizzato.

Questo non è un bug nel codice e hai già visto che funziona correttamente quando si esegue una compilazione di un vaso completo. Se è davvero importante risolvere questo problema mentre si esegue l'IDE, è possibile prendere in considerazione l'impostazione di una fase di creazione personalizzata che esegua prima la generazione completa di jar e manifest. Questo è probabilmente eccessivo. Il banner potrebbe essere convalidato in un secondo momento al di fuori dell'IDE testando una versione real release del jar.

+1

Non funziona per me anche quando si esegue il file jar con java. Qualche idea del perché? Ho questa riga nel mio file banner.txt: 'Version $ {application.version}' che è mostrata esattamente la stessa nella console –

+0

@AlirezaMirian, hai seguito esattamente gli stessi passaggi per costruire ed eseguire quello che ho descritto nel mio commento sulla domanda? Funziona bene per me. Se questo non funziona ancora per te, allora temo di non avere idee. Ci deve essere qualcosa di diverso nel tuo ambiente, ma non sono sicuro di cosa. –

3

Nel mio caso, guardo all'interno del manifest creato da spring-boot-maven-plug e non ci sono state versioni di implementazione all'interno.

Per aggiungerlo, aggiungo il plugin maven-jar-plugin nella sezione build.plugins del mio pom.xml.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>3.0.2</version> 
    <configuration> 
     <archive> 
       <manifestEntries> 
        <Implementation-Version>${project.version}</Implementation-Version> 
       </manifestEntries> 
     </archive> 
    </configuration> 
</plugin> 

Dopo di che, come già indicato prima di poter vedere il banner con la versione dell'applicazione solo quando faccio java-jar et non con la mia ide