2010-08-10 12 views
8

Sto utilizzando l'attività propertyfile mostrato di seguito nel mio script di build:Rimozione Data Commento di Apache Ant PropertyFile Task

<target name="build-brand" depends="-init" description="Adds version information to branding files."> 
    <propertyfile file="${basedir}/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties"> 
     <entry key="currentVersion" value="${app.windowtitle} ${app.version}" /> 
    </propertyfile> 
</target> 

Il compito funziona come previsto, solo che ogni volta che genera il progetto, la data commento la riga del file Bundle.properties viene aggiornata con il timestamp corrente. Questo si verifica anche se la variabile app.version non cambia e si traduce in una non-necessario impegnarsi per il controllo di versione costituito esclusivamente da quanto segue diff:

--- Base (BASE) 
+++ Locally Modified (Based On LOCAL) 
@@ -1,4 +1,4 @@ 
-#Thu, 22 Jul 2010 15:05:24 -0400 
+#Tue, 10 Aug 2010 13:38:27 -0400 

Come posso evitare aggiunta di o rimuovere questa data dal commento .properties file? Ho considerato un'operazione di cancellazione nell'elemento di voce nidificato del file di proprietà, ma è richiesto un valore chiave.

risposta

5

Questa non è una grande soluzione, ma che ne dici di rimuovere il commento tutti insieme?

<target name="build-brand" depends="-init" description="Adds version information to branding files."> 
    <propertyfile file="${basedir}/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties"> 
     <entry key="currentVersion" value="${app.windowtitle} ${app.version}" /> 
    </propertyfile> 
    <replaceregexp file="${basedir}/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties" match="^#.*\n" replace=""/> 
</target> 
+0

soluzione eccellente! – javacavaj

+1

omettendo byline = "true" vengono mantenuti altri commenti – Tarnschaf

+0

Questo è vero. Buon punto – JasonMArcher

0

Prova: <propertyfile file="..." comment="">

Edit:. Il che probabilmente non funzionerà :(Sembra che il colpevole è in realtà Properties.store(OutputStream, String):

successivo, una riga di commento è sempre scritta, che consiste in un ASCII # carattere, la data e l'ora (come se prodotto con il metodo toString della data per l'ora corrente) corrente, e un separatore linea, come generato dal Writer.

+0

Umm. Ho controllato la fonte e non sembra essere un modo per aggirare questo. Sia la classe LayoutPreservingProperties (utilizzata di default) che la classe Properties (utilizzata quando useJDKProperties è impostata su true) hanno questo nel loro metodo store. – javacavaj

1

Se avete bisogno di mettere una singola proprietà di un file basta usare eco:

<echo output="somefiles.properties">lastmodified=${lastmodified}</echo> 
Problemi correlati