Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 938
Ashwin Hegde Avatar asked Apr 10 '13 11:04

Ashwin Hegde


People also ask

How do I use .properties file?

The Properties file can be used in Java to externalize the configuration and to store the key-value pairs. The Properties. load() method of Properties class is convenient to load . properties file in the form of key-value pairs.

Can we write to properties file in Java?

In Plain Java A properties file consists of key-value pairs of string type. We can write values to a properties file in plain Java using the Properties class.

How do I break a line in .properties file?

You need to use \n\ as a solution. First two symbols \n - new line for string, third \ - multi-line in properties file. For example (in application.


Video Answer


2 Answers

The property file task is for editing properties files. It contains all sorts of nice features that allow you to modify entries. For example:

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

I've incremented my build_number by one. I have no idea what the value was, but it's now one greater than what it was before.

  • Use the <echo> task to build a property file instead of <propertyfile>. You can easily layout the content and then use <propertyfile> to edit that content later on.

Example:

<echo file="build.properties"> # Default Configuration source.dir=1 dir.publish=1 # Source Configuration dir.publish.html=1 </echo> 
  • Create separate properties files for each section. You're allowed a comment header for each type. Then, use to batch them together into one single file:

Example:

<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>       
like image 198
David W. Avatar answered Sep 27 '22 18:09

David W.


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.

like image 45
Deepak Bala Avatar answered Sep 27 '22 17:09

Deepak Bala