3/10/2010

How to trim ant property string value

When writing ant build files, I often need to trim the string value of an ant property. But I couldn't find a simple task to do that. So I wrote the following ant macrodef for this purpose. In short, it saves the property value into a temp file, trims lines while moving the file, and loads the file back into a new property.

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="trim" name="test">
<target name="trim">
<trim input="${text}" property="text.trimmed" />
<echo message="original text='${text}'" />
<echo message="trimmed text='${text.trimmed}'" />
</target>

<macrodef name="trim">
<attribute name="input" />
<attribute name="property" />
<sequential>
<tempfile property="temp.file" />
<echo file="${temp.file}" message="@{input}" />
<move file="${temp.file}" tofile="${temp.file}.2">
<filterchain>
<trim/>
</filterchain>
</move>
<loadfile property="@{property}" srcFile="${temp.file}.2" />
<delete file="${temp.file}.2" failonerror="false" />
</sequential>
</macrodef>

</project>
To run this target:
/tmp > ant -Dtext=' a b c '
Buildfile: build.xml

trim:
[move] Moving 1 file to /tmp
[delete] Deleting: /tmp/null1355243589.2
[echo] original text=' a b c '
[echo] trimmed text='a b c'

BUILD SUCCESSFUL
Total time: 0 seconds
The ant macro named trim declares the trim operation, while the trim target shows an example of calling the trim macro.

There are other solutions to achive the same result, e.g., write a custom ant task, or use ant-contrib tasks. But the advantage of this sample is that it only uses built-in ant tasks and no other library jars are needed.

33 comments:

Unknown said...
This comment has been removed by the author.
Unknown said...

File operations like this are relatively slow.
You could also use the ant contrib task propertyregex:

<macrodef name="trim">
  <attribute name="property" />
  <sequential>
    <propertyregex
      property="@{property}"
      input="${@{property}}"
      regexp="[\s]*(.+)[\s]*"
      replace="\1"
      defaultvalue="${@{property}}"
      override="true"
    />
  </sequential>
</macrodef>

yogesh said...
This comment has been removed by the author.
yogesh said...

I have one property file named "yogesh.properties".
This property file is used in filterset
<filterset id="myfilterset">
<filtersfile file="${yogesh.properties}"/>
<filter token="svn.folder.location" value="${svn.folder.location}"/>
<filter token="lastBranchRevision" value="${lastBranchRevision}"/>
this filter set is used in copy
<copy todir="${build.root}/${appname}" filtering="true" >
<filterset refid="myfilterset"/>
<fileset dir="../WebContent">
<include name="**/*.dtd"/>
<include name="WEB-INF/web.xml"/>
<include name="META-INF/context.xml"/>
</fileset>
</copy>
I want to trim values of "yogesh.property"(without change/Edit property file) before it place to the target.How to achieve this?

Unknown said...

Great and Useful Article.

Online Java Course

Java Online Training

Java Course Online

J2EE training

online J2EE training

Best Recommended books for Spring framework

Java Interview Questions












Java Training Institutes in Chennai

Java Training in Chennai

J2EE Training in Chennai

java j2ee training institutes in chennai

Unknown said...

Great and Useful Article.

Online Java Course

Java Online Training

Java Course Online

J2EE training

online J2EE training

Best Recommended books for Spring framework

Java Interview Questions












Java Training Institutes in Chennai

Java Training in Chennai

J2EE Training in Chennai

java j2ee training institutes in chennai

Unknown said...

I enjoyed on reading your blog post. Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article. Please visit my website, Friv 4000 Games is where all the free friv games.
Friv 4000

SANDY said...

At this time, it seems like Word Press is the preferred blogging platform available right now. (from what I’ve read) Is that what you’re using on your blog? Great post, however, I was wondering if you could write a little more on this subject?
Best AWS Training in Marathahalli | AWS Training in Marathahalli
Amazon Web Services Training in Anna Nagar, Chennai |Best AWS Training in Anna Nagar, Chennai

chitra pragya said...

Thank you a lot for providing individuals with a very spectacular possibility to read critical reviews from this site.

angularjs Training in chennai
angularjs Training in chennai

angularjs-Training in tambaram

angularjs-Training in sholinganallur

angularjs-Training in velachery

sai said...

Excellent post!!!. The strategy you have posted on this technology helped me to get into the next level and had lot of information in it.

python training Course in chennai | python training in Bangalore | Python training institute in kalyan nagar

gowsalya said...

Very nice post here and thanks for it .I always like and such a super contents of these post.Excellent and very cool idea and great content of different kinds of the valuable information's.
Online DevOps Certification Course - Gangboard
Best Devops Training institute in Chennai

afiah b said...

Impressive. Your story always bring hope and new energy. Keep up the good work.
Java training in Annanagar | Java training in Chennai

Java training in Chennai | Java training in Electronic city

nivatha said...

This is quite educational arrange. It has famous breeding about what I rarity to vouch. Colossal proverb. This trumpet is a famous tone to nab to troths. Congratulations on a career well achieved. This arrange is synchronous s informative impolite festivity to pity. I appreciated what you ok extremely here.
Data Science training in kalyan nagar | Data Science training in OMR

Data Science training in chennai | Data science training in velachery

Data science training in tambaram | Data science training in jaya nagar

SRI said...

This is most informative and also this post most user friendly and super navigation to all posts... Thank you so much for giving this information to me.. 

best rpa training in chennai | rpa online training |
rpa training in chennai |
rpa training in bangalore
rpa training in pune
rpa training in marathahalli
rpa training in btm

rama said...

I think this is the best article today about the future technology. Thanks for taking your own time to discuss this topic, I feel happy about that curiosity has increased to learn more about this topic.Artificial Intelligence Training in Bangalore. Keep sharing your information regularly for my future reference.

Unknown said...

Were a gaggle of volunteers as well as starting off a brand new gumption within a community. Your blog furnished us precious details to be effective on. You've got completed any amazing work!

devops online training

aws online training

data science with python online training

data science online training

rpa online training

suresh said...

Thanks for your sharing


DevOps Training in Chennai

Cloud Computing Training in Chennai

IT Software Training in Chennai

anusha said...



AngularJS Training in Chennai AngularJS Training in Chennai at BITA Academy. We are Best AngularJS Training Institute in Chennai. Our AngularJS training courses are taught by Experts.

ammu said...

very nice...
brunei darussalam web hosting
costa rica web hosting
costa rica web hosting
hong kong web hosting
jordan web hosting
turkey web hosting

ammu said...

very nice....
gibraltar web hosting
iceland web hosting
lebanon web hosting
lithuania shared web hosting
inplant training in chennai

shiv said...

nice............
vietnam

web hosting

google cloud server hosting
canada telus cloud hosting
algeeria

hosting

angola

hostig

shared hosting
bangladesh

hosting

botswana hosting
central african republi hosting
shared hosting

preethi minion said...

goood,,,,
afghanistan hosting
angola hosting
afghanistan web hosting
bahrain web hosting
belize web hosting
india shared web hosting

preethi minion said...

italy web hosting
suden web hosting
tunisia hosting
uruguay web hosting
inplant training in chennai

ammu said...

excellent blogs.....!!!
chile web hosting
colombia web hosting
croatia web hosting
cyprus web hosting
bahrain web hosting
india web hosting
iran web hosting
kazakhstan web hosting
korea web hosting
moldova web hosting

hari said...

nice........
inplant training in chennai
inplant training in chennai
online python internship
online web design
online machine learning internship
online internet of things internship
online cloud computing internship
online Robotics
online penetration testing

madhu said...

good..!

internship training in chennai
ethical hacking internship
hacking internship
civil internship in chennai
internships in chennai for cse students
architecture firms in chennai for internship
internships for cse students in chennai
free internship for cse students
internships in hyderabad for cse students 2020
in plant training in chennai

hari said...

very good.....
internship in bangalore for cse students
internship for aerospace engineering students in india
core companies in coimbatore for ece internship
paid internship in pune for computer engineering students
automobile internship in chennai
internship in chennai for eee with stipend
internship for bca students
dotnet training in chennai
aeronautical engineering internship
inplant training for ece students

preethi minion said...

Awesome blogs.....
robotics courses
inplant training in chennai for eee students
paid internships in hyderabad for cse students
list of architectural firms for internship in india
internship for mca students
matlab training in chennai
final year project for it
internship for production engineering students
aeronautical internship
inplant training report for civil engineering

Praisy Margret said...

good..nice..
internships in bangalore for ece students 2019
internship for aeronautical engineering students in bangalore
kaashiv infotech chennai
internship for ece students in bangalore 2018
internship in chennai for eee with stipend
internship in chennai for mechanical engineering students
kaashiv infotech hyderabad
kaashiv infotech internship
internship in chennai for cse 2019
internship in aeronautical engineering

shalini said...


good.....
kaashiv infotech pune
industrial training report for electronics and communication
internships for cse
internship for automobile engineering students in bangalore
internships in bangalore for eee students
internship for civil engineering students in chennai 2019
internship in automobile companies in chennai
robotics chennai
final year projects for information technology

karthickannan said...

very good information....
coronavirus update
inplant training in chennai
inplant training
inplant training in chennai for cse
inplant training in chennai for ece
inplant training in chennai for eee
inplant training in chennai for mechanical
internship in chennai
online internship

Arunvijay said...

Nice Articles...
Coronavirus Update
Intern Ship In Chennai
Inplant Training In Chennai
Internship For CSE Students
Online Internships
Internship For MBA Students
ITO Internship

Paari said...

Exelent....

Intern Ship In Chennai
Inplant Training In Chennai
Internship For CSE Students
Coronavirus Update
Online Internships
Internship For MBA Students
ITO Internship