Code cleanups in preparation for 2.0 work.
[java-idp.git] / build.xml
1 <!-- Main build configutaion for Shibboleth java components - Walter Hoehn 06/04/2002 -->
2
3 <project name="Shibboleth" default="install" basedir=".">
4
5         <!-- Set global properties for this build -->
6         <property name="distnameWayf" value="shibboleth-wayf" />
7         <property name="root" value="." />
8         <property name="src" value="${root}/src/" />
9         <property name="tests" value="${root}/tests/" />
10         <property name="approot" value="${root}/webApplication/" />
11         <property name="appconfig" value="${src}/conf/" />
12         <property name="configroot" value="${root}/webAppConfig/" />
13         <property name="build" value="${approot}/WEB-INF/classes/" />
14         <property name="libdir" value="${approot}/WEB-INF/lib/" />
15         <property name="buildlibs" value="${root}/lib/" />
16         <property name="endorsed" value="${root}/endorsed/" />
17         <property name="distlibs" value="${root}/lib/" />
18         <property name="custom" value="${root}/custom/" />
19         <property name="custom.libs" value="${custom}/lib"/>
20         <property name="custom.webapges" value="${custom}/web"/>
21         <property name="dist" value="${root}/dist/" />
22         <property name="docs" value="${root}/doc/" />
23         <property name="javadocs" value="${docs}/api/" />
24
25         <property name="year" value="2002-2005"/>
26         <property name="copyright" value="Copyright &#169; ${year} UCAID. All Rights Reserved."/>
27
28
29         <!-- antcontrib tasks -->
30         <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="${buildlibs}/ant-contrib.jar"/>
31
32         <!-- Import the tasks for building custom extensions -->
33         <import file="${custom}/extension-build.xml"/>
34
35         <!-- Construct the CLASSPATH -->
36         <path id="build.path">
37                 <pathelement location="${build}" />
38                 <fileset dir="${endorsed}">
39                         <include name="**/*.jar" />
40                 </fileset>
41                 <fileset dir="${libdir}">
42                         <include name="**/*.jar" />
43                 </fileset>
44                 <fileset dir="${buildlibs}">
45                         <include name="**/*.jar" />
46                 </fileset>
47         </path>
48
49
50         <!-- Prepare directory structure for project build-->
51         <target name="init">
52                 <mkdir dir="${build}" />
53                 <mkdir dir="${dist}" />
54                 <mkdir dir="${custom.libs}"/>
55                 <mkdir dir="${custom.webapges}"/>
56
57                 <if>
58                         <not> <available file="build.properties" /> </not>
59                         <then>
60                                 <copy file="conf/default.build.properties" tofile="build.properties" />
61                         </then>
62                 </if>
63
64                 <property file="build.properties" />
65         </target>
66
67
68         <!-- This target should be run before checking code into the repository -->
69         <target name="pre-checkin" depends="compile, test-all, clean-all" />
70
71
72         <!-- Compile classes and move them to ${build} -->
73         <target name="compile" depends="init"
74                 description="Compile source files">
75                 <!-- Compile the shib code into the build path -->
76                 <javac srcdir="${src}" destdir="${build}" includes="**/*.java" debug="on" source="1.4">
77                         <classpath refid="build.path" />
78                 </javac>
79                 <!-- Copy xml schemas to the build path -->
80                 <copy todir="${build}/schemas">
81                         <fileset dir="${src}/schemas"/>
82                 </copy>
83
84                 <!-- Build extensions -->
85                 <antcall target="ext-invoke">
86                         <param name="exts.dir" value="${custom}"/>
87             <param name="ext.build.function" value="ext-build"/>      
88                 </antcall>
89         </target>
90
91
92         <!-- Generate API docs -->
93         <target name="javadocs">
94                 <mkdir dir="${docs}" />
95                 <mkdir dir="${javadocs}" />
96                 <javadoc packagenames='edu.internet2.middleware.*'
97                         sourcepath='${src}' destdir='${javadocs}'
98                         author='true' version='true'
99                         windowtitle='Shibboleth Java API' doctitle='Shibboleth Java API'
100                         bottom='${copyright}'>
101                         <classpath refid="build.path" />
102                 </javadoc>
103         </target>
104
105
106         <!-- Build command-line utilities -->
107         <target name="build-util" depends="compile">
108                 <jar jarfile="${distlibs}/shib-util.jar" basedir="${build}" />
109         </target>
110
111         <!-- Cleanup after the build, test, and distribution processes -->
112         <target name="clean" depends="clean-all" />
113
114     <target name="clean-all" depends="clean-build, clean-dist, clean-test, clean-javadocs, clean-util"/>
115         
116     <target name="clean-build">
117                 <delete dir="${build}" />
118                 <delete dir="${custom.libs}"/>
119                 <delete dir="${custom.webapges}"/>
120             <antcall target="ext-invoke">
121                 <param name="exts.dir" value="${custom}"/>
122             <param name="ext.build.function" value="ext-clean-build"/>   
123             </antcall>
124         </target>
125         
126     <target name="clean-test">
127                 <delete>
128                         <fileset dir="${root}">
129                                 <include name="**/TEST*.txt" />
130                         </fileset>
131                 </delete>
132         </target>
133         
134     <target name="clean-dist">
135                 <delete dir="${dist}" />
136         <antcall target="ext-invoke">
137             <param name="exts.dir" value="${custom}"/>
138             <param name="ext.build.function" value="ext-clean-dist"/>   
139         </antcall>   
140         </target>
141         
142     <target name="clean-javadocs">
143                 <delete dir="${javadocs}" />
144         <antcall target="ext-invoke">
145             <param name="exts.dir" value="${custom}"/>
146             <param name="ext.build.function" value="ext-clean-javadocs"/>   
147         </antcall>
148         </target>
149         
150     <target name="clean-util">
151                 <delete>
152                         <fileset dir="${buildlibs}">
153                                 <include name="shib-util.jar" />
154                         </fileset>
155                 </delete>
156         </target>
157
158         <!-- Add to the classpath for unit tests -->
159         <path id="test.path">
160                 <path refid="build.path"/>
161                 <pathelement location="${tests}"/>
162         </path>
163
164         <!-- Compile classes needed for unit testing -->
165         <target name="compile-tests" depends="compile">
166                 <javac srcdir="${tests}" destdir="${build}" includes="**/*.java" debug="on" source="1.4">
167                         <classpath refid="build.path" />
168                 </javac>
169         </target>
170
171         <!-- Run automated tests on compiled code -->
172         <target name="test-all" depends="test-IdP, test-SP" />
173
174         <target name="test-IdP" depends="compile-tests">
175                 <junit printsummary="no" fork="yes" haltonfailure="yes" haltonerror="yes" dir="${root}">
176                         <jvmarg value="-Djava.endorsed.dirs=${endorsed}" />
177                         <classpath>
178                             <fileset dir="${custom.libs}">
179                                 <include name="*.jar"/>
180                             </fileset>
181                             <path refid="test.path"/>
182                         </classpath>
183                         <formatter type="plain" />
184                         <test name="edu.internet2.middleware.shibboleth.aa.arp.ArpTests" />
185                         <test name="edu.internet2.middleware.shibboleth.aa.attrresolv.ResolverTests" />
186                         <test name="edu.internet2.middleware.shibboleth.common.CredentialsTests" />
187                         <test name="edu.internet2.middleware.shibboleth.common.provider.NameMapperTests" />
188                         <test name="edu.internet2.middleware.shibboleth.common.TrustTests" />
189                         <test name="edu.internet2.middleware.shibboleth.idp.provider.DNHostNameExtractionTests" />
190                         <test name="edu.internet2.middleware.shibboleth.metadata.MetadataTests" />
191                         <test name="edu.internet2.middleware.shibboleth.idp.SSOTest" />      
192                         <test name="edu.internet2.middleware.shibboleth.idp.AATest" />    
193                 </junit>
194         </target>
195
196         <target name="test-SP" depends="compile-tests">
197                 <junit printsummary="no" fork="yes" haltonfailure="yes" haltonerror="yes" dir="${root}">
198                         <jvmarg value="-Djava.endorsed.dirs=${endorsed}" />
199                     <classpath>
200                                 <fileset dir="${custom.libs}">
201                                         <include name="*.jar"/>
202                                 </fileset>
203                         <path refid="test.path"/>
204                         </classpath>
205                         <formatter type="plain" />
206                         <test name="edu.internet2.middleware.shibboleth.aap.AAPTests" />
207                 </junit>
208         </target>
209
210
211         <!-- Tomcat Management -->
212         <target name="setupTomcatTasks" depends="init">
213                 <path id="tomcat.classpath">
214                         <fileset dir="${tomcat.home}/server/lib" includes="catalina-ant.jar"/>
215                 </path>
216
217                 <taskdef name="tomcatStart" classname="org.apache.catalina.ant.StartTask" classpathref="tomcat.classpath"/>
218                 <taskdef name="tomcatStop" classname="org.apache.catalina.ant.StopTask" classpathref="tomcat.classpath"/>
219                 <taskdef name="tomcatDeploy" classname="org.apache.catalina.ant.DeployTask" classpathref="tomcat.classpath"/>
220                 <taskdef name="tomcatUndeploy" classname="org.apache.catalina.ant.UndeployTask" classpathref="tomcat.classpath"/>
221         </target>
222
223         <target name="tomcat.start" depends="setupTomcatTasks" description="Start a deployed webapp using Tomcat manager">
224                 <tomcatStart url="${tomcat.url}" username="${tomcat.username}" password="${tomcat.password}" path="/${idp.webapp.name}"/>
225         </target>
226
227         <target name="tomcat.stop" depends="setupTomcatTasks" description="Stop a deployed webapp using Tomcat manager">
228                 <tomcatStop url="${tomcat.url}" username="${tomcat.username}" password="${tomcat.password}" path="/${idp.webapp.name}"/>
229         </target>
230
231         <target name="tomcat.deploy" depends="setupTomcatTasks" description="Upload and deploy using Tomcat manager">
232                 <tomcatDeploy url="${tomcat.url}" username="${tomcat.username}" password="${tomcat.password}" path="/${idp.webapp.name}"
233                         war="file:${basedir}/${dist}/${idp.webapp.name}.war"/>
234         </target>
235
236         <target name="tomcat.undeploy" depends="setupTomcatTasks" description="Undeploy using Tomcat manager">
237                 <tomcatUndeploy url="${tomcat.url}" username="${tomcat.username}" password="${tomcat.password}" path="/${idp.webapp.name}"/>
238         </target>
239
240
241         <!-- Automated key generation for crypto handles -->
242         <target name="genSecret" depends="compile">
243                 <taskdef name="genSecret" classname="edu.internet2.middleware.shibboleth.utils.HandleRepositorySecretGenerator" classpathref="build.path"/>
244                 <genSecret keyStorePath="${appconfig}/handle.jks" keyStorePassword="shibhs" keyStoreKeyAlias="handleKey" keyStoreKeyPassword="shibhs" />
245         </target>
246
247
248         <!-- Generate salt for use with targetted id -->
249         <target name="genSalt" depends="compile">
250                 <taskdef name="genSalt" classname="edu.internet2.middleware.shibboleth.utils.HandleRepositorySecretGenerator" classpathref="build.path"/>
251                 <genSalt keyStorePath="${appconfig}/persistent.jks" keyStorePassword="shibhs" keyStoreKeyAlias="handleKey" keyStoreKeyPassword="shibhs" />
252         </target>
253
254         <target name="exampleCertificates">
255                 <!--
256                 This target provides an example of the generation of
257                 self-signed Certificates for the IdP and SP. You may
258                 change the cn= and use it to generate new identities
259                 when you want to replace "example.org" with your real
260                 organization dns. However,the generated key and 
261                 certificate also have to be defined to the Credentials
262                 of the IdP and SP config files and added to the Metadata.
263                 -->
264                 <genkey alias="tomcat" storepass="exampleorg"
265                         keystore="${tomcat.home}/conf/idp-example.jks"
266                         keyalg="RSA" validity="365"
267                         dname="cn=idp.example.org, o=example.org, c=US"
268                         />
269                 <genkey alias="tomcat" storepass="exampleorg"
270                         keystore="${tomcat.home}/conf/sp-example.jks"
271                         keyalg="RSA" validity="365"
272                         dname="cn=sp.example.org, o=example.org, c=US"
273                         />
274         </target>
275
276
277         <!-- Package Shibboleth -->
278         <target name="package-idp" depends="compile, install.url" description="Creates the IdP war file and moves it to ${dist}">
279                 <!-- copy values to deployment descriptor -->
280                 <copy file="${configroot}/${idp.deployment.descriptor}" tofile="${configroot}/idp.xml" overwrite="true" />
281                 <replace file="${configroot}/idp.xml" token="$IDP_HOME$" value="${idp.home.url}" />
282      
283         <!-- package extensions -->
284         <antcall target="ext-invoke">
285             <param name="exts.dir" value="${custom}"/>
286             <param name="ext.build.function" value="ext-package"/>
287             <param name="ext.filesystem.home" value="${idp.home}"/>
288             <param name="ext.home.token" value="$IDP_HOME$"/>
289         </antcall>
290
291                 <!-- create the war -->
292                 <war warfile="${dist}/${idp.webapp.name}.war" webxml="${configroot}/idp.xml" basedir="${approot}" update="no" duplicate="preserve">
293                         <!-- Grab any custom extension libraries -->
294                         <lib dir="${custom.libs}"/>
295
296                         <!-- Grab any web material from custom extensions -->
297                         <fileset dir="${custom.webapges}"/>
298                 </war>
299
300                 <!-- clean up generated descriptor -->
301                 <delete file="${configroot}/idp.xml"/>
302         </target>
303
304         <target name="package-wayf" depends="compile" description="Creates the WAYF war and moves it to ${dist}">
305         <copy file="${appconfig}/schemas.properties" todir="${approot}/WEB-INF/classes/conf"/>
306         <copy file="${appconfig}/wayfconfig.xml" todir="${approot}/WEB-INF/classes/conf"/>
307         <copy file="${appconfig}/log4j.properties" tofile="${build}/log4j.properties" failonerror="false"/>
308             
309                 <war warfile="${dist}/${distnameWayf}.war" webxml="${configroot}/wayf.xml" basedir="${approot}" update="no"/>
310         </target>
311
312         <target name="package-sp" depends="compile, install.url" description="Creates the Java SP war and moves it to ${dist}">
313                 <!-- copy values to deployment descriptor -->
314                 <copy file="${configroot}/${sp.deployment.descriptor}" tofile="${configroot}/sp.xml" overwrite="true" />
315                 <replace file="${configroot}/sp.xml" token="$SP_HOME$" value="${sp.home.url}" />
316
317         <!-- package extensions -->
318         <antcall target="ext-invoke">
319             <param name="exts.dir" value="${custom}"/>
320             <param name="ext.build.function" value="ext-package"/>
321             <param name="ext.filesystem.home" value="${sp.home}"/>
322             <param name="ext.home.token" value="$SP_HOME$"/>
323         </antcall>
324         
325                 <!-- create the war -->
326                 <war warfile="${dist}/${sp.webapp.name}.war" webxml="${configroot}/sp.xml" basedir="${approot}" update="no">
327                         <!-- Grab any custom extension libraries -->
328                         <lib dir="${custom.libs}"/>
329
330                         <!-- Grab any web material from custom extensions -->
331                         <fileset dir="${custom.webapges}"/>
332                 </war>
333
334                 <!-- clean up generated descriptor -->
335                 <delete file="${configroot}/sp.xml"/>
336         </target>
337
338
339         <!-- Install Shibboleth -->
340         <target name="install.init">
341                 <taskdef name="xinput" classname="edu.internet2.middleware.shibboleth.utils.ant.XInput" classpath="${build}" />
342                 <typedef name="xoption" classname="edu.internet2.middleware.shibboleth.utils.ant.XInputOption" classpath="${build}" />
343         </target>
344
345         <target name="install.url">
346                 <taskdef name="urlconvert" classname="edu.internet2.middleware.shibboleth.utils.ant.URLConvert" classpath="${build}"/>
347                 <urlconvert path="${idp.home}" addProperty="idp.home.url"/>
348                 <urlconvert path="${sp.home}" addProperty="sp.home.url"/>
349         </target>
350
351         <target name="install" depends="init, install.init" description="Install Shibboleth">
352                 <if>
353                         <xinput type="confirm" defaultvalue="y">Do you want to install the Shibboleth Identity Provider?</xinput>
354                         <then>
355                                 <input message="What name do you want to use for the Identity Provider web application? [default: ${idp.webapp.name}]" 
356                                         addproperty="idp.webapp.name.input" defaultValue="${idp.webapp.name}" />
357                                 <var name="idp.webapp.name" value="${idp.webapp.name.input}" />
358
359                                 <antcall target="install.idp" />
360                         </then>
361                 </if>
362         </target>
363         
364         <target name="installx" depends="init, install.init" description="Interactive SP Install">
365                 <if>
366                         <xinput type="confirm" defaultvalue="y">Do you want to install the Shibboleth Service Provider?</xinput>
367                         <then>
368                                 <input message="What name do you want to use for the Service Provider web application? [default: ${sp.webapp.name}]" 
369                                         addproperty="sp.webapp.name.input" defaultValue="${sp.webapp.name}" />
370                                 <var name="sp.webapp.name" value="${sp.webapp.name.input}" />
371
372                                 <antcall target="install.sp" />
373                         </then>
374                 </if>
375         </target>
376
377         <target name="install.idp" depends="init, install.init">
378                 <xinput message="Deploying the java web application.  Do you want to install it directly onto the filesystem or use the tomcat manager application?" 
379                         addproperty="idp.install-type.input" type="menu" casesensitive="no" defaultValue="${idp.install-type}">
380                         <xoption value="filesystem.prompt">filesystem</xoption>
381                         <xoption>manager</xoption>
382                 </xinput>
383                 <var name="idp.install-type" value="${idp.install-type.input}" />
384
385                 <antcall target="install.idp.${idp.install-type}" />
386         </target>
387         
388         <target name="install.sp" depends="init, install.init">
389                 <xinput message="Deploying the java web application.  Do you want to install it directly onto the filesystem or use the tomcat manager application?" 
390                         addproperty="sp.install-type.input" type="menu" casesensitive="no" defaultValue="${sp.install-type}">
391                         <xoption value="filesystem.prompt">filesystem</xoption>
392                         <xoption>manager</xoption>
393                 </xinput>
394                 <var name="sp.install-type" value="${sp.install-type.input}" />
395
396                 <antcall target="install.sp.${sp.install-type}" />
397         </target>
398
399         <!-- Prompt user for filesystem installation options and save them to build.properties -->
400         <target name="install.idp.filesystem.prompt" depends="init, install.init">
401                 <input message="Select a home directory for the Shibboleth Identity Provider [default: ${idp.home}]"
402                         addproperty="idp.home.input" defaultvalue="${idp.home}" />
403                 <var name="idp.home" value="${idp.home.input}" />
404                 <input message="Enter tomcat home directory [default: ${tomcat.home}]"
405                         addproperty="tomcat.home.input" defaultvalue="${tomcat.home}" />
406                 <var name="tomcat.home" value="${tomcat.home.input}" />
407
408                 <if>
409                         <available file="${idp.home}/etc" />
410                         <then>
411                                 <echo>--------------------------------------------------------------------------------------</echo>
412                                 <echo>---</echo>
413                                 <echo>---   NOTE:  Existing Identiity Provider configuration at ${idp.home}/etc ${line.separator}---   will not be overwritten.</echo>
414                                 <echo>---</echo>
415                                 <echo>--------------------------------------------------------------------------------------</echo>
416                                 <property name="copy-idp-conf" value="n" />
417                         </then>
418                         <else>
419                                 <property name="copy-idp-conf" value="y" />
420                         </else>
421                 </if>
422
423                 <antcall target="install.idp.filesystem" />
424                 <antcall target="savePropertyFile" />
425         </target>
426         
427         <!-- Prompt user for filesystem installation options and save them to build.properties -->
428         <target name="install.sp.filesystem.prompt" depends="init, install.init">
429                 <input message="Select a home directory for the Shibboleth Service Provider [default: ${sp.home}]"
430                         addproperty="sp.home.input" defaultvalue="${sp.home}" />
431                 <var name="sp.home" value="${sp.home.input}" />
432                 <input message="Enter tomcat home directory [default: ${tomcat.home}]"
433                         addproperty="tomcat.home.input" defaultvalue="${tomcat.home}" />
434                 <var name="tomcat.home" value="${tomcat.home.input}" />
435
436                 <if>
437                         <available file="${sp.home}/etc" />
438                         <then>
439                                 <echo>--------------------------------------------------------------------------------------</echo>
440                                 <echo>---</echo>
441                                 <echo>---   NOTE:  Existing Service Provider configuration at ${sp.home}/etc ${line.separator}---   will not be overwritten.</echo>
442                                 <echo>---</echo>
443                                 <echo>--------------------------------------------------------------------------------------</echo>
444                                 <property name="copy-sp-conf" value="n" />
445                         </then>
446                         <else>
447                                 <property name="copy-sp-conf" value="y" />
448                         </else>
449                 </if>
450
451                 <antcall target="install.sp.filesystem" />
452                 <antcall target="savePropertyFile" />
453         </target>
454
455         <!-- Install Shibboleth IdP to filesystem using the properties in build.properties -->
456         <target name="install.idp.filesystem" depends="init, install.init, build-util, install.url, package-idp" 
457                 description="Install Shibboleth IdP to filesystem using the properties in build.properties">
458
459                 <!-- Move IdP war to Tomcat deployment directory -->
460                 <copy file="${dist}/${idp.webapp.name}.war" tofile="${tomcat.home}/webapps/${idp.webapp.name}.war" />
461
462                 <!-- copy IdP jars and utilities -->
463                 <copy todir="${idp.home}/lib">
464                         <fileset dir="lib" includesfile="conf/idp-lib.include" />
465                 </copy>
466
467                 <copy todir="${idp.home}/endorsed">
468                         <fileset dir="endorsed" />
469                 </copy>
470
471                 <copy todir="${idp.home}/bin">
472                         <fileset dir="bin"/>
473                 </copy>
474                 <chmod dir="${idp.home}/bin" perm="ug+rx" includes="**/*"/>
475
476                 <mkdir dir="${idp.home}/logs" />
477                 
478                 <!-- Copy necessary files to IDP_HOME -->
479                 <antcall target="install.idp.buildHome" />
480                 
481                 <antcall target="ext-invoke">
482             <param name="exts.dir" value="${custom}"/>
483             <param name="ext.build.function" value="ext-install-filesystem"/>
484             <param name="ext.filesystem.home" value="${idp.home}"/>
485             <param name="ext.home.token" value="$IDP_HOME$"/>
486         </antcall>  
487         
488         </target>
489         
490         <target name="install.idp.buildHome" depends="init, install.init">
491                 <!-- copy IdP configuration -->
492                 <if>
493                         <or>
494                                 <equals arg1="${copy-idp-conf}" arg2="y" />
495                                 <not> <available file="${idp.home}/etc" /> </not>
496                         </or>
497                         <then>
498                                 <delete dir="${idp.home}/etc" />
499                                 <antcall target="install.idp.filesystem.config" />
500                         </then>
501                 </if>
502         </target>
503
504         <!-- Install Shibboleth SP to filesystem using the properties in build.properties -->
505         <target name="install.sp.filesystem" depends="init, install.init, build-util, install.url, package-sp" 
506                 description="Install Shibboleth SP to filesystem using the properties in build.properties">
507
508                 <!-- Move SP war to Tomcat deployment directory -->
509                 <copy file="${dist}/${sp.webapp.name}.war" tofile="${tomcat.home}/webapps/${sp.webapp.name}.war" />
510                 
511                 <!-- Move Shib Filter jar to Tomcat shared directory -->
512                 <copy file="${distlibs}/shib-filter.jar" tofile="${tomcat.home}/shared/lib/shib-filter.jar" />
513                 
514                 <!-- Copy test secure application to Tomcat -->
515                 <copy file="${root}/data/secure.war" tofile="${tomcat.home}/webapps/secure.war" />
516
517                 <!-- copy sp jars and utilities -->
518                 <copy todir="${sp.home}/lib">
519                         <fileset dir="lib" includesfile="conf/idp-lib.include" />
520                 </copy>
521
522                 <copy todir="${sp.home}/bin">
523                         <fileset dir="bin"/>
524                 </copy>
525                 <chmod dir="${sp.home}/bin" perm="ug+rx" includes="**/*"/>
526
527                 <mkdir dir="${sp.home}/logs" />
528
529                 <!-- copy sp configuration -->
530                 <if>
531                         <or>
532                                 <equals arg1="${copy-sp-conf}" arg2="y" />
533                                 <not> <available file="${sp.home}/etc" /> </not>
534                         </or>
535                         <then>
536                                 <delete dir="${sp.home}/etc" />
537                                 <antcall target="install.sp.filesystem.config" />
538                         </then>
539                 </if>
540
541         <antcall target="ext-invoke">
542             <param name="exts.dir" value="${custom}"/>
543             <param name="ext.build.function" value="ext-install-filesystem"/>
544             <param name="ext.filesystem.home" value="${sp.home}"/>
545             <param name="ext.home.token" value="$SP_HOME$"/>
546         </antcall>      
547         </target>
548
549
550         <!-- copy shibboleth configuration to $IDP_HOME/etc, overwriting any existing configuration -->
551         <target name="install.idp.filesystem.config" depends="init, install.init, install.url">
552                 <mkdir dir="${idp.home}/etc" />
553                 <copy todir="${idp.home}/etc" overwrite="true">
554                         <fileset dir="${src}/conf" includesfile="conf/idp-conf.include"/>
555                 </copy>
556                 <move file="${idp.home}/etc/dist.idp.xml" tofile="${idp.home}/etc/idp.xml" overwrite="true" />
557                 <replace file="${idp.home}/etc/idp.xml" token="$IDP_HOME$" value="${idp.home.url}" />
558                 <replace file="${idp.home}/etc/idp.xml" token="$IDP_WEBAPP_NAME$" value="${idp.webapp.name}" />
559         </target>
560
561         <!-- copy SP configuration to $SP_HOME$/etc, overwriting any existing configuration -->
562         <target name="install.sp.filesystem.config" depends="init, install.init">
563                 <mkdir dir="${sp.home}/etc" />
564                 <copy todir="${sp.home}/etc" overwrite="true">
565                         <fileset dir="${src}/conf" includesfile="conf/sp-conf.include"/>
566                 </copy>
567                 <move file="${sp.home}/etc/dist.sp-iqidp.xml" tofile="${sp.home}/etc/sp.xml" overwrite="true" />
568                 <replace file="${sp.home}/etc/sp.xml" token="$SP_HOME$" value="${sp.home.url}" />
569         </target>
570
571         <!-- install Shibboleth-IdP war using tomcat's manager app -->
572         <target name="install.idp.manager" depends="init, install.init">
573                 <antcall target="setupTomcatTasks" />
574
575                 <input message="Enter local tomcat directory [default: ${tomcat.home}]" addproperty="tomcat.home.input" defaultValue="${tomcat.home}" />
576                 <var name="tomcat.home" value="${tomcat.home.input}" />
577
578                 <input message="Enter tomcat url [default: ${tomcat.url}]" addproperty="tomcat.url.input" defaultValue="${tomcat.url}" />
579                 <var name="tomcat.url" value="${tomcat.url.input}" />
580
581                 <input message="Enter tomcat username [default: ${tomcat.username}]" addproperty="tomcat.username.input" defaultValue="${tomcat.username}" />
582                 <var name="tomcat.username" value="${tomcat.username.input}" />
583
584                 <input message="Enter tomcat password [default: ${tomcat.password}]" addproperty="tomcat.password.input" defaultValue="${tomcat.password}" />
585                 <var name="tomcat.password" value="${tomcat.password.input}" />
586
587                 <antcall target="package-idp" />
588                 <antcall target="tomcat.deploy" />
589                 <antcall target="install.idp.buildHome" />
590                 <antcall target="savePropertyFile" />
591         </target>
592
593         <!-- save configuration to build.properties -->
594         <target name="savePropertyFile">
595                 <propertyfile file="build.properties">
596                         <entry key="idp.home" value="${idp.home}" />
597                         <entry key="sp.home" value="${sp.home}" />
598                         <entry key="idp.webapp.name" value="${idp.webapp.name}" />
599                         <entry key="sp.webapp.name" value="${sp.webapp.name}" />
600                         <entry key="idp.install-type" value="${idp.install-type}" />
601                         <entry key="tomcat.home" value="${tomcat.home}" />
602                         <entry key="tomcat.url" value="${tomcat.url}" />
603                         <entry key="tomcat.username" value="${tomcat.username}" />
604                         <entry key="tomcat.password" value="${tomcat.password}" />
605                 </propertyfile>
606         </target>
607         <!-- For IDE development, run this target first to delete all
608         directories generated by the install process before
609         recreating and reinstalling everything. -->
610         <target name="clean-install" depends="init" 
611                 description="Delete old configuration and Tomcat webapp directories.">
612                 <delete dir="${idp.home}" />
613                 <delete dir="${sp.home}" />
614                 <delete dir="${tomcat.home}/webapps/${idp.webapp.name}" />
615                 <delete dir="${tomcat.home}/webapps/${sp.webapp.name}" />
616         </target>
617 </project>