Search code examples
javaantproperties-file

adding comment in .properties files


By using following block of code in build.xml file

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

I am able to generate default.properties file with following file contents

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

I want to know how can I add my comments in the generated file? E.g. the generated properties should have the following content:

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

How can I do it dynamically using Ant's build.xml?


Solution

  • Writing the properties file with multiple comments is not supported. Why ?

    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;
    

    The ant property file task is backed by a java.util.Properties class which stores comments using the store() method. Only one comment is taken from the task and that is passed on to the Properties class to save into the file.

    The way to get around this is to write your own task that is backed by commons properties instead of java.util.Properties. The commons properties file is backed by a property layout which allows settings comments for individual keys in the properties file. Save the properties file with the save() method and modify the new task to accept multiple comments through <comment> elements.