Quando si riceve un bug report o un messaggio it-doesnt-work una delle mie domande iniziali è sempre quale versione? Con diverse build che si trovano in molti stadi di test, la pianificazione e la distribuzione di questo è spesso una domanda non banale.Il modo migliore per memorizzare le informazioni sulla versione di Subversion in EAR?
I il caso di rilascio di file Java JAR (ear, jar, rar, war) Mi piacerebbe essere in grado di cercare in/sul JAR e passare allo stesso ramo, versione o tag che era la fonte del rilasciato JAR.
Come è possibile regolare al meglio il processo di generazione di form in modo che le informazioni sulla versione nella checkout di svn rimangano nella build creata?
Stavo pensando lungo le linee di:
- aggiunta di un file versione, ma con un contenuto che cosa?
- memorizzare informazioni nel file META-INF, ma con quale proprietà con quale contenuto?
- fonti copia nell'archivio risultato
- aggiunti svn: oggetti da tutte le fonti con le parole chiave in luoghi compilatore li lascia essere
ho finito per usare l'approccio svnversion (l'anwser accettato), perché analizza l'intera sottostruttura anziché le informazioni svn che guardano solo il file/directory corrente. Per questo ho definito l'attività SVN nel file ant per renderla più portabile.
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask">
<classpath>
<pathelement location="${dir.lib}/ant/svnant.jar"/>
<pathelement location="${dir.lib}/ant/svnClientAdapter.jar"/>
<pathelement location="${dir.lib}/ant/svnkit.jar"/>
<pathelement location="${dir.lib}/ant/svnjavahl.jar"/>
</classpath>
</taskdef>
Non tutte le build risultano nei servizi Web. Il file ear prima della distribuzione deve rimanere lo stesso nome a causa dell'aggiornamento nel server delle applicazioni. Rendere il file eseguibile è ancora un'opzione, ma fino ad allora includo solo un file di informazioni sulla versione.
<target name="version">
<svn><wcVersion path="${dir.source}"/></svn>
<echo file="${dir.build}/VERSION">${revision.range}</echo>
</target>
Refs:
svnrevision: http://svnbook.red-bean.com/en/1.1/re57.html
svn informazioni http://svnbook.red-bean.com/en/1.1/re13.html
subclipse compito svn: http://subclipse.tigris.org/svnant/svn.html
svn client: http://svnkit.com/
I SvnTask è più portatile di eseguire "svnversion" come nella risposta accettata? –