You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Nicholas Christopher <nw...@flashcom.net> on 2000/10/31 16:22:50 UTC
Hostname and loops
I'm moving a set of make files over to ant. Most of it has been really straight
forward but there have been a couple of places I have got stuck.
- hostname
We had a homegrown version of ant's copying with a filter on. We have
configuration property files that are named like hostname.properties. I realize
I can -DHOSTNAME=xxxx on ant's command line but is there a way for to stuff
InetAddress.getLocalHost().getHostName() into a property?
- loops
We had operations that looped over lists of items, like copy all the files in
the selected sub directories bin,etc,lib etc. (i.e. not all the sub directories
just some) Can I build a fileset that I could feed to the copy task that would
do that? It seemed I wanted a fileset made up of several filesets...
Re: Hostname and loops
Posted by Nicholas Christopher <nw...@flashcom.net>.
I'll give it a try - many thanks.
Conor MacNeill wrote:
>
> Nicholas,
>
> > From: nwc@tanya-hide.medimom.com [mailto:nwc@tanya-hide.medimom.com]On
> > Behalf Of Nicholas Christopher
> > Sent: Wednesday, 1 November 2000 10:12
> > To: ant-user@jakarta.apache.org
> > Subject: Re: Hostname and loops
> >
> >
> > Stefan Bodewig wrote:
> > >
> > > >>>>> "NC" == Nicholas Christopher <nw...@flashcom.net> writes:
> > >
> > > NC> I realize I can -DHOSTNAME=xxxx on ant's command line but is
> > > NC> there a way for to stuff InetAddress.getLocalHost().getHostName()
> > > NC> into a property?
> > >
> > > No, but writing a task to do so would be trivial.
> > >
> >
> > Not trivial enough :-) Tasks seem easy but I couldn't immediately
> > see how a task
> > could set a property.
> >
>
> Try
>
> public class Hostname extends Task {
>
> protected String propertyName;
>
> public void setPropertyName(String propertyName) {
> this.propertyName = propertyName;
> }
>
> public void execute() throws BuildException {
> try {
> project.setProperty(propertyName,
> InetAddress.getLocalHost().getHostName());
> } catch (Exception e) {
> throw new BuildException(e, location);
> }
> }
> }
>
> Use it like this
>
> <target name="tryme">
> <taskdef name="hostname"
> classname="org.apache.tools.ant.taskdefs.Hostname"/>
> <hostname propertyName="goofy"/>
> <echo message="Hostname is ${goofy}"/>
> </target>
>
> You'll may need to add more error checking (is propertyName set, for
> example). I'll leave the details to you.
> Conor
RE: Hostname and loops
Posted by Conor MacNeill <co...@ebinteractive.com.au>.
Nicholas,
> From: nwc@tanya-hide.medimom.com [mailto:nwc@tanya-hide.medimom.com]On
> Behalf Of Nicholas Christopher
> Sent: Wednesday, 1 November 2000 10:12
> To: ant-user@jakarta.apache.org
> Subject: Re: Hostname and loops
>
>
> Stefan Bodewig wrote:
> >
> > >>>>> "NC" == Nicholas Christopher <nw...@flashcom.net> writes:
> >
> > NC> I realize I can -DHOSTNAME=xxxx on ant's command line but is
> > NC> there a way for to stuff InetAddress.getLocalHost().getHostName()
> > NC> into a property?
> >
> > No, but writing a task to do so would be trivial.
> >
>
> Not trivial enough :-) Tasks seem easy but I couldn't immediately
> see how a task
> could set a property.
>
Try
public class Hostname extends Task {
protected String propertyName;
public void setPropertyName(String propertyName) {
this.propertyName = propertyName;
}
public void execute() throws BuildException {
try {
project.setProperty(propertyName,
InetAddress.getLocalHost().getHostName());
} catch (Exception e) {
throw new BuildException(e, location);
}
}
}
Use it like this
<target name="tryme">
<taskdef name="hostname"
classname="org.apache.tools.ant.taskdefs.Hostname"/>
<hostname propertyName="goofy"/>
<echo message="Hostname is ${goofy}"/>
</target>
You'll may need to add more error checking (is propertyName set, for
example). I'll leave the details to you.
Conor
Re: Hostname and loops
Posted by Nicholas Christopher <nw...@flashcom.net>.
Stefan Bodewig wrote:
>
> >>>>> "NC" == Nicholas Christopher <nw...@flashcom.net> writes:
>
> NC> I realize I can -DHOSTNAME=xxxx on ant's command line but is
> NC> there a way for to stuff InetAddress.getLocalHost().getHostName()
> NC> into a property?
>
> No, but writing a task to do so would be trivial.
>
Not trivial enough :-) Tasks seem easy but I couldn't immediately see how a task
could set a property.
> NC> - loops
>
> Aargh! Sorry, forget that 8-).
>
> NC> We had operations that looped over lists of items, like copy all
> NC> the files in the selected sub directories bin,etc,lib
> NC> etc. (i.e. not all the sub directories just some) Can I build a
> NC> fileset that I could feed to the copy task that would do that?
>
> I think you could, something like
>
> <fileset dir=".">
> <include name="bin/**" />
> <include name="etc/**" />
> <include name="lib/**" />
> </fileset>
>
> NC> It seemed I wanted a fileset made up of several filesets
>
> You can specify more than one fileset for <copy> as well.
Thanks. This seems to me a little cloudiness with ant. Javac uses multiple <src>
tags, javadoc <sourcepath>, etc. It be nice is there was a single consistant
file list mechanism.
Re: Hostname and loops
Posted by Stefan Bodewig <bo...@bost.de>.
>>>>> "NC" == Nicholas Christopher <nw...@flashcom.net> writes:
NC> I realize I can -DHOSTNAME=xxxx on ant's command line but is
NC> there a way for to stuff InetAddress.getLocalHost().getHostName()
NC> into a property?
No, but writing a task to do so would be trivial.
NC> - loops
Aargh! Sorry, forget that 8-).
NC> We had operations that looped over lists of items, like copy all
NC> the files in the selected sub directories bin,etc,lib
NC> etc. (i.e. not all the sub directories just some) Can I build a
NC> fileset that I could feed to the copy task that would do that?
I think you could, something like
<fileset dir=".">
<include name="bin/**" />
<include name="etc/**" />
<include name="lib/**" />
</fileset>
NC> It seemed I wanted a fileset made up of several filesets
You can specify more than one fileset for <copy> as well.
Stefan