ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dominique Devienne <DDevie...@lgc.com>
Subject RE: [newbie] Copy jars mensioned in classpath
Date Mon, 24 Mar 2003 17:24:41 GMT
It's a little bit convoluted, but the <script> below works...
Can <copy> or <delete> a Path reference. --DD



P:\org_apache\antx>C:\pro\ant1.5.1\bin\ant -f copy-delete-path-script.xml
clean
Buildfile: copy-delete-path-script.xml

clean:
   [delete] Deleting directory P:\org_apache\antx\CopyDeletePath

BUILD SUCCESSFUL
Total time: 1 second
P:\org_apache\antx>C:\pro\ant1.5.1\bin\ant -f copy-delete-path-script.xml
copy-path
Buildfile: copy-delete-path-script.xml

init:
     [echo] path = C:\pro\ant1.5.1\lib\ant-contrib-0.1.jar
     [echo]        C:\pro\ant1.5.1\lib\ant.jar
     [echo]        C:\pro\ant1.5.1\lib\bsf.jar
     [echo]        C:\pro\ant1.5.1\lib\js.jar
     [echo]        C:\pro\ant1.5.1\lib\junit.jar
     [echo]        C:\pro\ant1.5.1\lib\optional.jar
     [echo]        C:\pro\ant1.5.1\lib\pmd-1.01.jar
     [echo]        C:\pro\ant1.5.1\lib\which.jar
     [echo]        C:\pro\ant1.5.1\lib\xercesImpl.jar
     [echo]        C:\pro\ant1.5.1\lib\xml-apis.jar

copy-path:
    [mkdir] Created dir: P:\org_apache\antx\CopyDeletePath

-add-path-element-to-task:

-copy-path:
     [copy] Copying 10 files to P:\org_apache\antx\CopyDeletePath

BUILD SUCCESSFUL
Total time: 1 second
P:\org_apache\antx>dir CopyDeletePath
 Volume in drive P has no label.
 Volume Serial Number is AC70-F961

 Directory of P:\org_apache\antx\CopyDeletePath

03/24/2003  11:19a      <DIR>          .
03/24/2003  11:19a      <DIR>          ..
03/24/2003  11:19a               9,324 ant-contrib-0.1.jar
03/24/2003  11:19a             717,666 ant.jar
03/24/2003  11:19a             105,573 bsf.jar
03/24/2003  11:19a             390,767 js.jar
03/24/2003  11:19a             121,070 junit.jar
03/24/2003  11:19a             654,735 optional.jar
03/24/2003  11:19a             484,480 pmd-1.01.jar
03/24/2003  11:19a              17,193 which.jar
03/24/2003  11:19a             831,473 xercesImpl.jar
03/24/2003  11:19a             108,484 xml-apis.jar
              10 File(s)      3,440,765 bytes
               2 Dir(s)   6,337,785,856 bytes free

P:\org_apache\antx>C:\pro\ant1.5.1\bin\ant -f copy-delete-path-script.xml
delete-path
Buildfile: copy-delete-path-script.xml

delete-path:
     [echo] jars2delete =
P:\org_apache\antx\CopyDeletePath\ant-contrib-0.1.jar
     [echo]            P:\org_apache\antx\CopyDeletePath\ant.jar
     [echo]            P:\org_apache\antx\CopyDeletePath\bsf.jar
     [echo]            P:\org_apache\antx\CopyDeletePath\js.jar
     [echo]            P:\org_apache\antx\CopyDeletePath\junit.jar
     [echo]            P:\org_apache\antx\CopyDeletePath\optional.jar
     [echo]            P:\org_apache\antx\CopyDeletePath\pmd-1.01.jar
     [echo]            P:\org_apache\antx\CopyDeletePath\which.jar
     [echo]            P:\org_apache\antx\CopyDeletePath\xercesImpl.jar
     [echo]            P:\org_apache\antx\CopyDeletePath\xml-apis.jar

-add-path-element-to-task:

-delete-path:
   [delete] Deleting 1 files from P:\org_apache\antx\CopyDeletePath
   [delete] Deleting 1 files from P:\org_apache\antx\CopyDeletePath
   [delete] Deleting 1 files from P:\org_apache\antx\CopyDeletePath
   [delete] Deleting 1 files from P:\org_apache\antx\CopyDeletePath
   [delete] Deleting 1 files from P:\org_apache\antx\CopyDeletePath
   [delete] Deleting 1 files from P:\org_apache\antx\CopyDeletePath
   [delete] Deleting 1 files from P:\org_apache\antx\CopyDeletePath
   [delete] Deleting 1 files from P:\org_apache\antx\CopyDeletePath
   [delete] Deleting 1 files from P:\org_apache\antx\CopyDeletePath
   [delete] Deleting 1 files from P:\org_apache\antx\CopyDeletePath

BUILD SUCCESSFUL
Total time: 1 second
P:\org_apache\antx>dir CopyDeletePath
 Volume in drive P has no label.
 Volume Serial Number is AC70-F961

 Directory of P:\org_apache\antx\CopyDeletePath

03/24/2003  11:21a      <DIR>          .
03/24/2003  11:21a      <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)   6,341,246,976 bytes free

P:\org_apache\antx>type copy-delete-path-script.xml
<?xml version="1.0"?>

<!-- ANT build file to test a specific feature or bug of ANT.
     Dominique Devienne <ddevienne@lgc.com>         Mar 2003
  -->
<project name="CopyDeletePath" default="init">

  <target name="init">
    <!-- Simulate user-supplied Path -->
    <path id="path">
      <fileset dir="${ant.home}/lib" includes="*.jar" />
    </path>
    <property name="path" refid="path" />

    <!-- Pretty print path-->
    <pathconvert property="formatted-path" refid="path"
                 pathsep="${line.separator}       " />
    <echo message="path = ${formatted-path}" />
  </target>

  <target name="clean">
    <delete dir="${ant.project.name}" quiet="true" />
  </target>

  <target name="copy-path" depends="init">
    <mkdir dir="${ant.project.name}" />
    <antcall target="-copy-path">
      <param name="taskid" value="copy" />
      <reference refid="path" torefid="path2add" />
    </antcall>
  </target>

  <target name="-copy-path" depends="-add-path-element-to-task">
    <copy id="copy" todir="${ant.project.name}" />
  </target>

  <target name="delete-path">
    <mkdir dir="${ant.project.name}" />
    <path id="jars2delete">
      <fileset dir="${ant.project.name}" includes="*.jar" />
    </path>
    <property name="jars2delete" refid="jars2delete" />
    <pathconvert property="formatted-path2" refid="jars2delete"
                 pathsep="${line.separator}           " />
    <echo message="jars2delete = ${formatted-path2}" />

    <antcall target="-delete-path">
      <param name="taskid" value="delete" />
      <reference refid="jars2delete" torefid="path2add" />
    </antcall>
  </target>

  <target name="-delete-path" depends="-add-path-element-to-task">
    <delete id="delete" quiet="true" />
  </target>

  <target name="-add-path-element-to-task">
    <script language="javascript"><![CDATA[
      prj  = self.getProject();
      task = prj.getReference(prj.getProperty("taskid"));
      path = prj.getReference("path2add");
      importPackage(Packages.org.apache.tools.ant.types);
      jars = path.list();
      for (var i = 0; i < jars.length; ++i) {
        fileset = new FileSet();
        fileset.setProject(prj);
        fileset.setFile(new java.io.File(jars[i]));
        task.addFileset(fileset);
      }
    ]]></script>
  </target>

</project>

P:\org_apache\antx>

-----Original Message-----
From: "Schaible, Jörg" [mailto:Joerg.Schaible@gft.com] 
Sent: Monday, March 24, 2003 10:43 AM
To: Ant Users List
Subject: RE: [newbie] Copy jars mensioned in classpath

Hi Dominique,

> From: Dominique Devienne
> 
> I'm afraid not directly.... At least I can't think of one. In your
> situation, I'd write a <script> that creates that populates a 
> copy tasks
> with every file of a Path, feeding a <fileset 
> file="thefile"/> for each
> entry in Path#list() to <copy> (which accepts several filesets).

possibly there is a better way to define the paths. Originally 
I tried to define something like


foo.jar.foo1=${foo.dir}/foo1.jar
foo.jar.foo2=${foo.dir}/foo2.jar
foo.jars=${foo.jar.foo1} ${foo.jar.foo2}
 
bar.jar.bar=${bar.dir}/bar.jar
bar.jars=${bar.jar.bar}


but I was not able to create a classpath from ${bar.jars} and 
${foo.jars}, since the path element treats the entries with
multiple jar files as single element. Maybe someone knows a 
better solution for this ?

Regards,
Jörg

> -----Original Message-----
> From: "Schaible, Jörg"
> Sent: Monday, March 24, 2003 5:40 AM
> To: Ant Users List
> Subject: [newbie] Copy jars mensioned in classpath
> 
> Hi,
> 
> my application is based on several other Java libraries. 
> These are defined
> in an
>  external property file, e.g.
> 
> foo.jar.foo1=${foo.dir}/foo1.jar
> foo.jar.foo2=${foo.dir}/foo2.jar
> foo.path=${foo.jar.foo1}:${foo.jar.foo2}
> 
> bar.jar.bar=${bar.dir}/bar.jar
> bar.path=${bar.jar.bar}
> 
> you got the pattern ...
> 
> In the build.xml I am now able to use this definitions like:
> 
> 
> 	<path id="classpath">
> 		<pathelement path="${foo.path}" />
> 		<pathelement path="${bar.path}" />
> 	</path>
> 
> 	<target name="compile">
> 		<mkdir dir="${build.dir}" />
> 		<javac srcdir="${src.java}"
> 		       destdir="${build.dir}" 
> 		   	 classpathref="classpath" >
> 		</javac>
> 	</target>
> 
> 
> Works fine.
> 
> Now I want to copy the jars used in the classpath to a distribution
> directory,
> but I did not find a solution using the copy-task to define a 
> fileset based
> on
> the definitions made above, since every definition could 
> contain more than
> one
> jar file separated by a colon. Is there any task or a fileset 
> construct,
> that
> enables me to get the jars from the involved classpath in a fileset?
> Regards,
> Jörg
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org

Mime
View raw message