2013-04-10 32 views
28

Durch die Verwendung von folgendem Code-Block in build.xml DateiHinzufügen Kommentar in .properties Dateien

<propertyfile file="default.properties" comment="Default properties"> 
    <entry key="source.dir" value="1" /> 
    <entry key="dir.publish" value="1" /> 
    <entry key="dir.publish.html" value="1" /> 
</propertyfile> 

Ich bin in der Lage default.properties Datei mit folgendem Dateiinhalt

source.dir=1 
dir.publish=1 
dir.publish.html=1 

Ich mag wissen, zu erzeugen, wie kann ich meine Kommentare in die generierte Datei einfügen? Z.B. die erzeugten Eigenschaften sollte folgenden Inhalt haben:

# Default Configuration 
source.dir=1 
dir.publish=1 
# Source Configuration 
dir.publish.html=1 

Wie kann ich es den dynamisch tun mit Ant build.xml?

+0

Benötigen Sie mehrere Kommentare in den Eigenschaften-Datei? Können Sie Ihre Frage bearbeiten, um zu reflektieren, wo Sie diese Kommentare erwarten? –

+0

Ja, ich habe die Frage bearbeitet und jetzt können Sie sehen, was ich will ... –

+0

Ja, ich brauche mehrere Kommentare –

Antwort

8

Das Schreiben der Eigenschaftendatei mit mehreren Kommentaren wird nicht unterstützt. Warum ?

PropertyFile.java

public class PropertyFile extends Task { 

    /* ======================================================================== 
    * 
    * Instance variables. 
    */ 

    // Use this to prepend a message to the properties file 
    private String    comment; 

    private Properties   properties; 

Die Ameise Eigenschaftendatei Aufgabe durch eine java.util.Properties Klasse unterstützt wird, die Kommentare mit der store() Methode speichert. Es wird nur ein Kommentar von der Aufgabe genommen, der an die Klasse Properties übergeben wird, um sie in der Datei zu speichern.

Der Weg, um dies zu umgehen, ist Ihre eigene Aufgabe zu schreiben, die von commons properties statt java.util.Properties unterstützt wird. Die Commons-Eigenschaftendatei wird durch eine property layout unterstützt, die settings comments for individual keys in der Eigenschaftendatei ermöglicht. Speichern Sie die Eigenschaftendatei mit der save()-Methode, und ändern Sie die neue Aufgabe, um mehrere Kommentare über <comment>-Elemente zu akzeptieren.

0

Gemäß der documentation der PropertyFile Aufgabe können Sie die generierten Eigenschaften an eine vorhandene Datei anhängen. Sie könnten eine Eigenschaftendatei nur mit der Kommentarzeile haben und die Ant-Aufgabe die generierten Eigenschaften anhängen lassen.

5

Die Eigenschaftendatei Aufgabe ist für Bearbeitung Eigenschaften Dateien. Es enthält alle möglichen netten Funktionen, mit denen Sie Einträge ändern können. Zum Beispiel:

<propertyfile file="build.properties"> 
    <entry key="build_number" 
     type="int" 
     operation="+" 
     value="1"/> 
</propertyfile> 

Ich habe meine build_number um eins erhöht. Ich habe keine Ahnung, was der Wert ist, aber es ist jetzt eins größer als das, was es vorher war.

  • Verwenden Sie die <echo> Aufgabe, eine Eigenschaftsdatei statt <propertyfile> zu bauen. Sie können den Inhalt einfach strukturieren und dann <propertyfile> verwenden, um diesen Inhalt später zu bearbeiten.

Beispiel:

<echo file="build.properties"> 
# Default Configuration 
source.dir=1 
dir.publish=1 
# Source Configuration 
dir.publish.html=1 
</echo> 
  • separate Eigenschaftsdateien für jeden Abschnitt erstellen. Sie dürfen einen Kommentar-Header für jeden Typ haben.Verwenden Sie dann zu Charge sie zusammen in einer einzigen Datei:

Beispiel:

<propertyfile file="default.properties" 
    comment="Default Configuration"> 
    <entry key="source.dir" value="1"/> 
    <entry key="dir.publish" value="1"/> 
<propertyfile> 

<propertyfile file="source.properties" 
    comment="Source Configuration"> 
    <entry key="dir.publish.html" value="1"/> 
<propertyfile> 
<concat destfile="build.properties"> 
    <fileset dir="${basedir}"> 
     <include name="default.properties"/> 
     <include name="source.properties"/> 
    </fileset> 
</concat> 

<delete> 
    <fileset dir="${basedir}"> 
     <include name="default.properties"/> 
     <include name="source.properties"/> 
    </fileset> 
</delete>  
+0

Ich mag diese Antwort am besten. Es ist kreativ und einfach zu bedienen. Danke! – Mig82