2010-08-10 17 views
8

estoy usando la tarea propertyfile se muestra a continuación en mi escritura de la estructura:Extracción Fecha Comentario de Apache Ant PropertyFile Tarea

<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> 

La tarea funciona como se espera, excepto que cada vez que genere el proyecto, el comentario de la fecha línea del archivo Bundle.properties se actualiza con la marca de tiempo actual. Esto ocurre incluso si la variable app.version no cambia y resulta en un no-necesario comprometerse con el control de versiones que consiste únicamente en los siguientes diferencias:

--- 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 

¿Cómo puedo evitar la adición de o eliminar este comentario desde la fecha archivo .properties? Consideré una operación de eliminación en el elemento de entrada anidada en el archivo de propiedades, pero se requiere un valor de clave.

Respuesta

5

Esto no es una gran solución, pero ¿qué hay de eliminar el comentario todos juntos?

<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

excelente solución! – javacavaj

+1

omitiendo byline = "true" otros comentarios se conservan – Tarnschaf

+0

Eso es verdad. Buen punto. – JasonMArcher

0

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

Editar:. Lo que probablemente no va a funcionar :(Parece que el culpable es en realidad Properties.store(OutputStream, String):

A continuación, una línea de comentario es siempre escrita, que consiste en una ASCII # carácter, la fecha y la hora (como si producido por el método toString de fecha de la hora actual) actual, y un separador línea que genera el escritor.

+0

Umm. Revisé la fuente y no parece haber una forma de evitar esto. Tanto la clase LayoutPreservingProperties (usada por defecto) como la clase Properties (utilizada cuando useJDKProperties se establece en true) tienen esto en su método de tienda. – javacavaj

1

Si usted necesita poner una sola propiedad en un archivo sólo tiene que utilizar eco:

<echo output="somefiles.properties">lastmodified=${lastmodified}</echo> 
Cuestiones relacionadas