root/trunk/build/buildTools/getJar.xml

Revision 3762 (checked in by douglm, 1 month ago)

Allow use of new git/maven project jars from old-style builds.

Line 
1 <?xml version="1.0"?>
2
3 <!-- ===================================================================
4      Define a macro to fetch jars from the bedework repository or from
5      the generated library in the named project.
6
7      IF a project is named and we cannot locate the named file we try the
8      repository.
9
10      For jars fetched from the archive we have a two step process, first check
11      that a copy in a local cache is up to date, second copy from the local cache
12      into the final destination. This allows the caller to delete and recreate the
13      destination, ensuring that jar version changes don't result in multiple
14      copies of a jar.
15
16      @param name     Name of the jar e.g. junit
17      @param version  optional version for the jar
18      @param src      optional url for the get task
19      @param lib      optional destination for the get task
20      @param libcache optional location of the cache
21      @param property optional name of property to hold location of resulting jar
22      @param project optional project name for local fetch from generated quickstart.
23      =================================================================== -->
24 <project name="getJar" basedir="." default="">
25   <macrodef name="getJar">
26     <attribute name="name"/>
27     <attribute name="mvn" default="no" />
28     <attribute name="version" default="" />
29     <attribute name="src" default="http://dev.bedework.org/downloads/lib"/>
30     <attribute name="lib" default="${lib.dir}"/>
31     <attribute name="libcache" default="${org.bedework.libcache.dir}"/>
32     <attribute name="property" default="" />
33     <attribute name="project" default="" />
34     <attribute name="projectHome" default="" />
35     <sequential>
36       <taskdef resource="net/sf/antcontrib/antcontrib.properties" />
37        
38           <mkdir dir="@{libcache}" />
39
40       <if>
41         <isset property="org.bedework.print.jar.reference.info" />
42         <then>
43           <mkdir dir="${bedework.home}/dist"/>
44           <echoxml file="${bedework.home}/dist/jarrefs.xml" append="true">
45             <jar-ref>
46               <name>@{name}</name>
47               <version>@{version}</version>
48               <from>${project.name}</from>
49             </jar-ref>
50           </echoxml>
51         </then>
52       </if>
53
54       <if>
55         <isset property="org.bedework.print.jar.licence.info" />
56         <then>
57           <license name="@{name}" version="@{version}"
58                    prefix="org.bedework.license"
59                    licenseInfoFile="${org.bedework.license-mappings}" />
60          
61           <mkdir dir="${bedework.home}/dist"/>
62           <echoxml file="${bedework.home}/dist/jarlicenses.xml" append="true">
63             <jarLicense>
64               <name>@{name}</name>
65               <version>${org.bedework.license.version}</version>
66               <groupId>${org.bedework.license.groupId}</groupId>
67               <artifactId>${org.bedework.license.artifactId}</artifactId>
68               <license>${org.bedework.license.license}</license>
69               <from>${project.name}</from>
70             </jarLicense>
71           </echoxml>
72         </then>
73       </if>
74
75       <!-- Names are of form
76              <name-part>-<version>.jar   or
77              <name-part>.jar
78         -->
79       <if>
80         <equals arg1="@{version}" arg2="" />
81         <then>
82           <var name="org.bedework.getjar.jarname" value="@{name}.jar" />
83         </then>
84         <else>
85           <var name="org.bedework.getjar.jarname" value="@{name}-@{version}.jar" />
86        </else>
87       </if>
88
89       <!-- Ensure projectHome is set to something
90         -->
91
92       <if>
93         <equals arg1="@{projectHome}" arg2="" />
94         <then>
95           <var name="org.bedework.getjar.projecthome"
96                value="${project.home}/../@{project}" />
97         </then>
98         <else>
99           <var name="org.bedework.getjar.projecthome" value="@{projectHome}" />
100        </else>
101       </if>
102
103       <var name="org.bedework.getjar.dest"
104            value="@{lib}/${org.bedework.getjar.jarname}" />
105
106       <var name="org.bedework.getjar.finished" value="false" />
107
108       <!-- If a project or projecthome was specified try to get it from the
109            local file system -->
110      
111       <if>
112         <or>
113           <not>
114             <equals arg1="@{project}" arg2="" />
115           </not>
116           <not>
117             <equals arg1="@{projecthome}" arg2="" />
118           </not>
119         </or>
120         <then>
121           <if>
122             <equals arg1="@{mvn}" arg2="no" />
123             <then>
124               <var name="org.bedework.getjar.project.jar"
125                  value="${org.bedework.getjar.projecthome}/dist/${org.bedework.getjar.jarname}" />
126             </then>
127             <else>
128               <var name="org.bedework.getjar.project.jar"
129                  value="${org.bedework.getjar.projecthome}/target/${org.bedework.getjar.jarname}" />
130             </else>
131           </if>
132           <noisyMsg message="check ${org.bedework.getjar.project.jar}" />
133                
134           <if>
135             <available file="${org.bedework.getjar.project.jar}" />
136             <then>
137               <!-- Say we found the file -->
138               <var name="org.bedework.getjar.finished" value="true" />
139
140               <if>
141                 <not>
142                   <uptodate srcfile="${org.bedework.getjar.project.jar}"
143                             targetfile="${org.bedework.getjar.dest}" />
144                 </not>
145                 <then>
146                   <noisyMsg message="Fetch ${org.bedework.getjar.jarname} from project @{project}" />
147                   <copy file="${org.bedework.getjar.project.jar}"
148                         todir="@{lib}" overwrite="yes" preservelastmodified="true" />
149                 </then>
150               </if>
151             </then>
152           </if>
153         </then>
154       </if>
155
156       <!-- if org.bedework.getjar.finished is true we found a local file,
157           otherwise we need to check the repository. -->
158
159       <if>
160         <equals arg1="${org.bedework.getjar.finished}" arg2="false" />
161         <then>
162           <if>
163             <equals arg1="${org.bedework.offline.build}" arg2="yes" />
164             <then>
165               <noisyMsg message="Offline: skip check for ${org.bedework.getjar.jarname}" />
166             </then>
167             <else>
168               <!-- Not offline - check repository -->
169               <if>
170                 <isset property="org.bedework.jar.repository.location" />
171                 <then>
172                   <!-- user specified -->
173                   <noisyMsg message="Fetch ${org.bedework.getjar.jarname} from archive '${org.bedework.jar.repository.location}'" />
174                   <get src="${org.bedework.jar.repository.location}/${org.bedework.getjar.jarname}"
175                        dest="@{libcache}/${org.bedework.getjar.jarname}"
176                        ignoreerrors="true"
177                        verbose="${org.bedework.getjar.noisy}"
178                        usetimestamp="true"/>
179                 </then>
180                 <else>
181                       <noisyMsg message="Fetch ${org.bedework.getjar.jarname} from archive @{src}" />
182                       <get src="@{src}/${org.bedework.getjar.jarname}"
183                            dest="@{libcache}/${org.bedework.getjar.jarname}"
184                            ignoreerrors="true"
185                            verbose="${org.bedework.getjar.noisy}"
186                            usetimestamp="true"/>
187                 </else>
188               </if>
189             </else>
190           </if>
191
192           <if>
193             <not>
194               <available file="@{libcache}/${org.bedework.getjar.jarname}" />
195             </not>
196             <then>
197               <echo message="******************************************************" />
198               <echo message="File ${org.bedework.getjar.jarname} is not available" />
199               <echo message="******************************************************" />
200             </then>
201             <else>
202               <if>
203                 <isset property="org.bedework.getjar.jar.listfile" />
204                 <then>
205                   <!-- Write the name to the list -->
206                   <echo file="${org.bedework.getjar.jar.listfile}"
207                         append="yes"
208                         message="@{name}" />
209                 </then>
210               </if>
211                
212               <copy file="@{libcache}/${org.bedework.getjar.jarname}"
213                     todir="@{lib}" overwrite="yes" preservelastmodified="true" />
214             </else>
215           </if>
216
217         </then>
218       </if>
219
220       <if>
221         <not>
222           <equals arg1="@{property}" arg2="" />
223         </not>
224         <then>
225           <noisyMsg message="set property @{property} to ${org.bedework.getjar.dest}" />
226
227           <property name="@{property}" location="${org.bedework.getjar.dest}" />
228         </then>
229         <elseif>
230           <isset property="org.bedework.getjar.property.prefix" />
231           <then>
232             <noisyMsg message="set property ${org.bedework.getjar.property.prefix}.@{name} to ${org.bedework.getjar.dest}" />
233
234             <property name="${org.bedework.getjar.property.prefix}.@{name}"
235                       location="${org.bedework.getjar.dest}" />
236           </then>
237         </elseif>
238         <else>
239           <noisyMsg message="set property org.bedework.getjar.jarloc.@{name} to ${org.bedework.getjar.dest}" />
240
241           <property name="org.bedework.getjar.jarloc.@{name}"
242                     location="${org.bedework.getjar.dest}" />
243         </else>
244       </if>
245     </sequential>
246   </macrodef>
247 </project>
Note: See TracBrowser for help on using the browser.