1 <!-- Main build configutaion for Shibboleth java components - Walter Hoehn 06/04/2002 -->
3 <project name="Shibboleth" default="dist-origin" basedir=".">
5 <!-- Set global properties for this build -->
6 <property name="distname" value="shibboleth" />
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="dist" value="${root}/dist/" />
19 <property name="docs" value="${root}/doc/" />
20 <property name="javadocs" value="${docs}/api/" />
22 <property name="year" value="2002"/>
23 <property name="copyright" value="Copyright © ${year} UCAID. All Rights Reserved."/>
25 <!-- Configure properties to find Tomcat and access the Manager application -->
26 <property name="tomcat.home" value="/usr/local/tomcat"/>
27 <property name="url" value="http://localhost:8080/manager"/>
28 <property name="username" value="manager"/>
29 <property name="password" value="password"/>
31 <!-- Uncomment this for Tomcat Tasks
32 <path id="tomcat.classpath">
33 <fileset dir="${tomcat.home}/server/lib" includes="catalina-ant.jar"/>
36 <taskdef name="tomcatStart" classname="org.apache.catalina.ant.StartTask" classpathref="tomcat.classpath"/>
37 <taskdef name="tomcatStop" classname="org.apache.catalina.ant.StopTask" classpathref="tomcat.classpath"/>
38 <taskdef name="tomcatDeploy" classname="org.apache.catalina.ant.DeployTask" classpathref="tomcat.classpath"/>
39 <taskdef name="tomcatUndeploy" classname="org.apache.catalina.ant.UndeployTask" classpathref="tomcat.classpath"/>
42 <!-- Construct the CLASSPATH -->
43 <path id="build.path">
44 <pathelement path="${classpath}" />
45 <pathelement location="${build}" />
46 <fileset dir="${libdir}">
47 <include name="**/*.jar" />
49 <fileset dir="${buildlibs}">
50 <include name="**/*.jar" />
55 <!-- Prepare directory structure for project build-->
57 <mkdir dir="${build}" />
58 <mkdir dir="${dist}" />
62 <!-- This target should be run before checking code into the repository -->
63 <target name="pre-checkin" depends="compile, test-all, clean-all" />
66 <!-- Compile classes and move them to ${build} -->
67 <target name="compile" depends="init">
68 <javac srcdir="${src}" destdir="${build}" includes="**/*.java" debug="on">
69 <classpath refid="build.path" />
71 <copy todir="${build}/schemas">
72 <fileset dir="${src}/schemas"/>
74 <copy todir="${build}/conf">
75 <fileset dir="${src}/conf"/>
79 <target name="compile-tests" depends="compile">
80 <javac srcdir="${tests}" destdir="${build}" includes="**/*.java" debug="on">
81 <classpath refid="build.path" />
86 <!-- Generate API docs -->
87 <target name="javadocs">
88 <mkdir dir="${docs}" />
89 <mkdir dir="${javadocs}" />
90 <javadoc packagenames='edu.internet2.middleware.*'
91 sourcepath='${src}' destdir='${javadocs}'
92 author='true' version='true'
93 windowtitle='Shibboleth Java API' doctitle='Shibboleth Java API'
94 bottom='${copyright}'>
95 <classpath refid="build.path" />
99 <!-- Create various product distributions and move them to ${dist} -->
101 <target name="dist-all" depends="compile, test-all, package-all, clean-build" />
102 <target name="package-all">
103 <war warfile="${dist}/${distname}.war" webxml="${configroot}/all.xml" basedir="${approot}" update="no" />
106 <target name="dist-origin" depends="compile, test-origin, package-origin, clean-build" />
107 <target name="package-origin">
108 <war warfile="${dist}/${distname}.war" webxml="${configroot}/origin.xml" basedir="${approot}" update="no" />
111 <!-- Ant target used to test the Java Service Provider.
112 *** You may not agree with these decisions.
113 Tomcat must be stopped during the build.
114 Compile everything, deploy the WAR, and delete the old directory
115 so the WAR gets expanded when Tomcat restarts.
116 Ant and Eclipse should agree on the Build directory, and the
117 class files should remain in place after deployment.
119 <target name="dist-target" depends="compile, package-target">
120 <copy file="${dist}/${distname}.war" tofile="${tomcat.home}/webapps/${distname}.war" />
121 <delete dir="${tomcat.home}/webapps/${distname}" quiet="yes" />
124 <target name="package-target">
125 <war warfile="${dist}/${distname}.war" webxml="${configroot}/target.xml" basedir="${approot}" update="no" />
127 <target name="dist-wayf" depends="compile, package-wayf, clean-build" />
128 <target name="package-wayf">
129 <war warfile="${dist}/${distname}-wayf.war" webxml="${configroot}/wayf.xml" basedir="${approot}" update="no" />
132 <!-- Build utilities -->
133 <target name="build-util" depends="compile">
134 <jar jarfile="${distlibs}/shib-util.jar" basedir="${build}" />
138 <!-- Cleanup after the build, test, and distribution processes -->
139 <target name="clean" depends="clean-all" />
140 <target name="clean-all" depends="clean-build, clean-dist, clean-test, clean-javadocs, clean-util" />
141 <target name="clean-build">
142 <delete dir="${build}" />
144 <target name="clean-test">
146 <fileset dir="${root}">
147 <include name="**/TEST*.txt" />
151 <target name="clean-dist">
152 <delete dir="${dist}" />
154 <target name="clean-javadocs">
155 <delete dir="${javadocs}" />
157 <target name="clean-util">
159 <fileset dir="${buildlibs}">
160 <include name="shib-util.jar" />
165 <!-- Run automated tests on compiled code -->
166 <target name="test-all" depends="test-origin" />
167 <target name="test-origin" depends="compile-tests">
168 <junit printsummary="no" fork="yes" haltonfailure="yes" haltonerror="yes" dir="${root}">
169 <jvmarg value="-Djava.endorsed.dirs=${endorsed}" />
170 <classpath refid="build.path" />
171 <formatter type="plain" />
172 <test name="edu.internet2.middleware.shibboleth.aa.arp.ArpTests" />
173 <test name="edu.internet2.middleware.shibboleth.aa.attrresolv.ResolverTests" />
177 <!-- Tomcat Management -->
178 <target name="start" description="Start a deployed webapp using Tomcat manager">
179 <tomcatStop url="${url}" username="${username}" password="${password}" path="/${distname}"/>
182 <target name="stop" description="Stop a deployed webapp using Tomcat manager">
183 <tomcatStop url="${url}" username="${username}" password="${password}" path="/${distname}"/>
186 <target name="deploy" description="Upload and deploy using Tomcat manager">
187 <tomcatDeploy url="${url}" username="${username}" password="${password}" path="/${distname}"
188 war="file:${basedir}/${dist}/${distname}.war"/>
191 <target name="undeploy" description="Undeploy using Tomcat manager">
192 <tomcatUndeploy url="${url}" username="${username}" password="${password}" path="/${distname}"/>
195 <!-- Automated key generation -->
196 <target name="genSecret" depends="compile">
197 <taskdef name="genSecret" classname="edu.internet2.middleware.shibboleth.utils.HandleRepositorySecretGenerator" classpathref="build.path"/>
198 <genSecret keyStorePath="${appconfig}/handle.jks" keyStorePassword="shibhs" keyStoreKeyAlias="handleKey" keyStoreKeyPassword="shibhs" />
201 <target name="genSalt" depends="compile">
202 <taskdef name="genSalt" classname="edu.internet2.middleware.shibboleth.utils.HandleRepositorySecretGenerator" classpathref="build.path"/>
203 <genSalt keyStorePath="${appconfig}/persistent.jks" keyStorePassword="shibhs" keyStoreKeyAlias="handleKey" keyStoreKeyPassword="shibhs" />