blob: 57eba1a09d8f9d62384b21d9861a80e89139f1c0 [file] [log] [blame]
<!--
Copyright (C) 2009-2013, JoshuaTree. All Rights Reserved.
Licensed to Joshua Tree Software, LLC under New BSD license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
JTS licenses this file to You under the New BSD License
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://jts.us/License
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project name="fortress-sentry" default="build" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
<target name="init">
<!-- read properties from the build.properties, if any -->
<property name="component-propfile" value="${basedir}/build.properties"/>
<property file="${component-propfile}"/>
<!-- read properties from the ${user.home}/propfile, if any -->
<property name="user-propfile" value="${user.home}/build.properties"/>
<property file="${user-propfile}"/>
<property name="project.name" value="Fortress Java Sentry Websphere"/>
<property name="name" value="fortressSentry"/>
<property name="version" value="1.0-RC18"/>
<property name="title" value="Fortress Java Sentry Websphere ${version}"/>
<property name="vendor" value="Joshua Tree Software"/>
<property name="package" value="us.jts.sentry.*"/>
<property name="ivy.install.version" value="2.2.0"/>
<!-- Env vars -->
<property name="src.dir" value="${basedir}/src"/>
<property name="lib.dir" value="${basedir}/lib"/>
<property name="config.dir" value="${basedir}/conf"/>
<property name="src.java.dir" value="${src.dir}/main/java"/>
<property name="src.java.proxy.dir" value="${src.java.dir}/proxy"/>
<property name="src.java.impl.dir" value="${src.java.dir}/impl"/>
<property name="build.dir" value="${basedir}/build"/>
<property name="build.classes.dir" value="${build.dir}/classes"/>
<property name="build.classes.proxy.dir" value="${build.classes.dir}/proxy"/>
<property name="build.classes.impl.dir" value="${build.classes.dir}/impl"/>
<property name="dist.dir" value="${basedir}/dist"/>
<property name="work.base.dir" value="${build.dir}/work"/>
<property name="work.dir" value="${work.base.dir}/dflt"/>
<property name="src.dist.zip" value="${dist.dir}/${name}Src-${version}.zip"/>
<property name="dst.remote.conf" value="${config.dir}/fortress.properties"/>
<property name="src.remote.conf" value="${config.dir}/fortress.properties.src"/>
<!-- config.suffix has a '\' which is required for commons configuration utility -->
<property name="config.suffix" value="dc=${suffix.name}\,dc=com"/>
<!-- Build artifacts -->
<property name="fortressTomcatSentry.jar" value="${dist.dir}/fortressProxyTomcat-${version}.jar"/>
<property name="fortressTomcat7Sentry.jar" value="${dist.dir}/fortressProxyTomcat7-${version}.jar"/>
<property name="fortressUserRegistry.jar" value="${dist.dir}/fortressProxyWebSphere-${version}.jar"/>
<property name="fortressSentry.jar" value="${dist.dir}/fortressSentry-${version}.jar"/>
<property name="fortressSentry.zip" value="${dist.dir}/fortressSentryWebsphereDist-${version}.zip"/>
<property name="fortressSentryDistro.jar" value="${dist.dir}/fortressSentry-${version}.jar"/>
<property name="fortressJbossSentryDistro.jar" value="${dist.dir}/fortressSentryJBoss-${version}.jar"/>
<property name="fortressSentryImpl.jar" value="${dist.dir}/fortressSentryImpl-${version}.jar"/>
<property name="javadoc.dist.zip" value="${dist.dir}/fortressSentryDoc-${version}.zip"/>
<property name="config.dir" value="${basedir}/conf"/>
<!-- Dependent LIBs, not in maven -->
<property name="fortress.jar" value="${lib.dir}/fortress-${version}.jar"/>
<property name="ws_runtime.jar" value="${lib.dir}/ws_runtime.jar"/>
<!-- Dependent LIBs in maven -->
<property name="catalina7.jar" value="${lib.dir}/tomcat-catalina-7.0.22.jar"/>
<property name="catalina.jar" value="${lib.dir}/catalina-6.0.33.jar"/>
<property name="commons-config.jar" value="${lib.dir}/commons-configuration-1.6.jar"/>
<property name="commons-lang.jar" value="${lib.dir}/commons-lang-2.4.jar"/>
<property name="commons-collections.jar" value="${lib.dir}/commons-collections-3.2.1.jar"/>
<property name="commons-pool.jar" value="${lib.dir}/commons-pool-1.5.2.jar"/>
<property name="commons-logging.jar" value="${lib.dir}/commons-logging-1.1.1.jar"/>
<property name="unboundsdk.jar" value="${lib.dir}/unboundid-ldapsdk-2.1.0.jar"/>
<property name="jgraph.jar" value="${lib.dir}/jgrapht-jdk1.5-0.7.3.jar"/>
<property name="log4j.jar" value="${lib.dir}/log4j-1.2.17.jar"/>
<property name="jasypt.jar" value="${lib.dir}/jasypt-1.8.jar"/>
<property name="ehcache-core.jar" value="${lib.dir}/ehcache-core-2.6.5.jar"/>
<property name="slf4j-api.jar" value="${lib.dir}/slf4j-api-1.7.5.jar"/>
<property name="slf4j-jcl.jar" value="${lib.dir}/slf4j-jcl-1.7.5.jar"/>
<!-- ########### Define classpaths ########################### -->
<path id="build.proxy.class.path">
<!-- J2EE JARs -->
<pathelement location="${catalina.jar}"/>
<pathelement location="${ws_runtime.jar}"/>
<!--pathelement location="${websphere.jar}"/-->
</path>
<path id="build.proxy.tc7.class.path">
<!-- J2EE JARs -->
<pathelement location="${catalina7.jar}"/>
<pathelement location="${ws_runtime.jar}"/>
</path>
<path id="build.impl.class.path">
<!-- J2EE JARs -->
<pathelement location="${catalina.jar}"/>
<pathelement location="${ws_runtime.jar}"/>
<!-- Fortress JARs -->
<pathelement location="${build.classes.proxy.dir}"/>
<pathelement location="${fortress.jar}"/>
<pathelement location="${log4j.jar}"/>
</path>
<!-- JARS required for distribution -->
<patternset id="dist.libs">
<include name="${fortress.jar}"/>
<include name="${log4j.jar}"/>
<include name="${commons-collections.jar}"/>
<include name="${commons-config.jar}"/>
<include name="${commons-lang.jar}"/>
<include name="${commons-logging.jar}"/>
<include name="${commons-pool.jar}"/>
<include name="${jgraph.jar}"/>
<include name="${jasypt.jar}"/>
<include name="${ehcache-core.jar}"/>
<include name="${slf4j-api.jar}"/>
<include name="${ehcache-core.jar}"/>
<include name="${slf4j-api.jar}"/>
<include name="${slf4j-jcl.jar}"/>
</patternset>
<!-- Javadoc vars -->
<property name="javadoc.dir" value="${dist.dir}/docs/api"/>
<property name="javadoc.images.dir" value="${javadoc.dir}/images"/>
<property name="javadoc.bottom" value="&lt;small&gt;Copyright &amp;copy; 2009-2013, JoshuaTree. All Rights Reserved."/>
<property name="javadoc.overview" value="${src.java.dir}/overview.html" />
<property name="javadoc.stylesheet" value="${src.java.dir}/fortress-javadoc.css" />
<path id="javadoc.source.path">
<pathelement location="${src.java.proxy.dir}"/>
<pathelement location="${src.java.impl.dir}"/>
</path>
<property name="javac.optimize" value="false"/>
<property name="javac.debug" value="true"/>
<property name="javac.deprecation" value="true"/>
<!-- Presetdef to create jar with common manifest -->
<presetdef name="fortressSentry.jar">
<jar compress="true">
<manifest>
<attribute name="Created-By" value="${vendor} - ${project.name} dev team"/>
<attribute name="Implementation-Vendor" value="${vendor}"/>
<attribute name="Implementation-Version" value="${version}"/>
<attribute name="Specification-Title" value="${title}"/>
<attribute name="Package" value="${package}"/>
<attribute name="Extension-Name" value="${name}"/>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Compile-JDK" value="${java.runtime.version}"/>
<attribute name="Test-VM" value="${java.vm.version}"/>
</manifest>
</jar>
</presetdef>
</target>
<!-- =================================
target: download-ivy - pulls down ivy.jar from maven 2 website
================================= -->
<target name="download-ivy" depends="init" unless="local.mode">
<!-- download from web site so that it can be used even without any special installation -->
<echo message="downloading ivy to Ant home: ${ant.home}"/>
<get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
dest="${ant.home}/lib" usetimestamp="true"/>
</target>
<!-- =================================
target: resolve
================================= -->
<target name="resolve" depends="init,download-ivy" description="--> retreive dependencies with ivy" unless="local.mode">
<ivy:retrieve pattern="${lib.dir}/[artifact]-[revision].[ext]" />
</target>
<!-- =================================
target: clean-cache
================================= -->
<target name="clean-cache" description="--> clean the ivy cache">
<ivy:cleancache />
</target>
<!-- ######################################################### -->
<target name="clean" depends="init" description="removes generated files">
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}"/>
</target>
<!-- ############### create javadoc ############################### -->
<target name="javadoc" depends="init" description="generates javadocs">
<mkdir dir="${javadoc.dir}"/>
<javadoc packagenames="${package}"
sourcepathref="javadoc.source.path"
destdir="${javadoc.dir}"
windowtitle="${title}"
doctitle="${title} "
bottom="${javadoc.bottom}"
overview="${javadoc.overview}"
public="true"
version="true"
author="true"
splitindex="false"
nodeprecated="true"
nodeprecatedlist="true"
notree="true"
noindex="false"
nohelp="true"
nonavbar="false"
classpathref="build.impl.class.path"
serialwarn="false">
</javadoc>
</target>
<!-- ############### compile packages ############################### -->
<target name="compile-proxy" depends="init,resolve" description="compiles proxy source files">
<mkdir dir="${build.classes.proxy.dir}"/>
<javac srcdir="${src.java.proxy.dir}"
debug="${javac.debug}"
deprecation="${javac.deprecation}"
destdir="${build.classes.proxy.dir}">
<exclude name="com/jts/fortress/sentry/tomcat/Tc7AccessMgrProxy.java"/>
<classpath refid="build.proxy.class.path"/>
</javac>
</target>
<target name="compile-proxy-tc7" depends="compile-proxy" description="compiles tomcat 7 proxy source files">
<javac srcdir="${src.java.proxy.dir}"
debug="${javac.debug}"
deprecation="${javac.deprecation}"
destdir="${build.classes.proxy.dir}">
<exclude name="com/jts/fortress/sentry/tomcat/TcAccessMgrProxy.java"/>
<classpath refid="build.proxy.tc7.class.path"/>
</javac>
</target>
<target name="compile-impl" depends="init,resolve" description="compiles impl source files">
<mkdir dir="${build.classes.impl.dir}"/>
<javac srcdir="${src.java.impl.dir}"
debug="${javac.debug}"
deprecation="${javac.deprecation}"
destdir="${build.classes.impl.dir}">
<classpath refid="build.impl.class.path"/>
</javac>
</target>
<target name="build-jar-tcproxy" depends="compile-proxy,compile-proxy-tc7,compile-impl">
<mkdir dir="${dist.dir}"/>
<fortressSentry.jar destfile="${fortressTomcatSentry.jar}">
<fileset dir="${build.classes.proxy.dir}">
<include name="com/jts/fortress/sentry/tomcat/**"/>
<include name="com/jts/fortress/sentry/util/**"/>
<exclude name="com/jts/fortress/sentry/tomcat/Tc7AccessMgrProxy.class"/>
</fileset>
<fileset dir="${build.classes.impl.dir}">
<include name="com/jts/fortress/sentry/tomcat/TcPrincipal.class"/>
</fileset>
<metainf dir="${basedir}" includes="LICENSE.txt,NOTICE.txt"/>
</fortressSentry.jar>
</target>
<target name="build-jar-tc7proxy" depends="compile-proxy,compile-impl">
<mkdir dir="${dist.dir}"/>
<fortressSentry.jar destfile="${fortressTomcat7Sentry.jar}">
<fileset dir="${build.classes.proxy.dir}">
<include name="com/jts/fortress/sentry/tomcat/**"/>
<include name="com/jts/fortress/sentry/util/**"/>
<exclude name="com/jts/fortress/sentry/tomcat/TcAccessMgrProxy.class"/>
</fileset>
<fileset dir="${build.classes.impl.dir}">
<include name="com/jts/fortress/sentry/tomcat/TcPrincipal.class"/>
</fileset>
<metainf dir="${basedir}" includes="LICENSE.txt,NOTICE.txt"/>
</fortressSentry.jar>
</target>
<target name="build-jar-wsproxy" depends="compile-proxy">
<mkdir dir="${dist.dir}"/>
<fortressSentry.jar destfile="${fortressUserRegistry.jar}">
<fileset dir="${build.classes.proxy.dir}">
<include name="com/jts/fortress/sentry/websphere/**"/>
<include name="com/jts/fortress/sentry/util/**"/>
</fileset>
<metainf dir="${basedir}" includes="LICENSE.txt,NOTICE.txt"/>
</fortressSentry.jar>
</target>
<target name="build-jar-impl" depends="compile-impl">
<mkdir dir="${dist.dir}"/>
<fortressSentry.jar basedir="${build.classes.impl.dir}" destfile="${fortressSentryImpl.jar}"/>
</target>
<target name="build-jar-distro" depends="init,build-jar-impl">
<unjar dest="${work.dir}" src="${fortressSentryImpl.jar}"/>
<unjar dest="${work.dir}" src="${fortress.jar}"/>
<unjar dest="${work.dir}" src="${log4j.jar}"/>
<unjar dest="${work.dir}" src="${commons-collections.jar}"/>
<unjar dest="${work.dir}" src="${commons-config.jar}"/>
<unjar dest="${work.dir}" src="${commons-lang.jar}"/>
<unjar dest="${work.dir}" src="${commons-pool.jar}"/>
<unjar dest="${work.dir}" src="${commons-logging.jar}"/>
<unjar dest="${work.dir}" src="${unboundsdk.jar}"/>
<unjar dest="${work.dir}" src="${jgraph.jar}"/>
<unjar dest="${work.dir}" src="${jasypt.jar}"/>
<unjar dest="${work.dir}" src="${ehcache-core.jar}"/>
<unjar dest="${work.dir}" src="${slf4j-api.jar}"/>
<unjar dest="${work.dir}" src="${slf4j-jcl.jar}"/>
<fortressSentry.jar basedir="${work.dir}" compress="true" jarfile="${fortressSentryDistro.jar}"/>
</target>
<target name="build" depends="clean,build-jar-tcproxy,build-jar-tc7proxy,build-jar-wsproxy,build-jar-impl, build-jar-distro,javadoc">
<copy todir="${dist.dir}" file="${basedir}/LICENSE.txt"/>
<copy todir="${dist.dir}" file="${basedir}/NOTICE.txt"/>
<copy todir="${dist.dir}" file="${basedir}/TOMCAT-SETUP-NOTES.txt"/>
<copy todir="${dist.dir}" file="${basedir}/WEBSPHERE-SETUP-NOTES.txt"/>
</target>
<!-- ############### create distribution packages ############################ -->
<target name="dist" depends="build" description="Create source and binary distribution">
<zip destfile='${src.dist.zip}'>
<zipfileset dir='${src.java.dir}'/>
<zipfileset dir='${dist.dir}' prefix='META-INF'>
<include name="*.txt"/>
</zipfileset>
</zip>
<zip destfile="${javadoc.dist.zip}" basedir="${javadoc.dir}">
<zipfileset dir='${dist.dir}' prefix='META-INF'>
<include name="LICENSE.txt"/>
<include name="NOTICE.txt"/>
</zipfileset>
</zip>
<echo message="############### Modify fortress configuration per user settings ###############"/>
<delete file="${dst.remote.conf}"/>
<copyfile src="${src.remote.conf}" dest="${dst.remote.conf}"/>
<replace file="${dst.remote.conf}" token="@SUFFIX@" value="${suffix}"/>
<replace file="${dst.remote.conf}" token="@LDAP_HOST@" value="${ldap.host}"/>
<replace file="${dst.remote.conf}" token="@LDAP_PORT@" value="${ldap.port}"/>
<replace file="${dst.remote.conf}" token="@ROOT_DN@" value="${root.dn}"/>
<replace file="${dst.remote.conf}" token="@CFG_ROOT_PW@" value="${cfg.root.pw}"/>
<replace file="${dst.remote.conf}" token="@ADM_MIN_CONN@" value="${admin.min.conn}"/>
<replace file="${dst.remote.conf}" token="@ADM_MAX_CONN@" value="${admin.max.conn}"/>
<replace file="${dst.remote.conf}" token="@CFG_CRYPTO_PROP@" value="${crypto.prop}"/>
<!-- Break up the install binary packages by platform: -->
<zip destfile="${fortressSentry.zip}">
<zipfileset dir="${dist.dir}" prefix="doc">
<include name="fortressSentryDoc*.zip"/>
</zipfileset>
<zipfileset dir="${dist.dir}" prefix="src">
<include name="fortressSentrySrc*.zip"/>
</zipfileset>
<zipfileset dir="${dist.dir}" prefix="proxy">
<include name="fortressTomcatSentry*.jar"/>
<include name="fortressTomcat7Sentry*.jar"/>
<include name="fortressUserRegistry*.jar"/>
</zipfileset>
<zipfileset dir="${lib.dir}" prefix="lib" excludes="ws_runtime*,*catalina*,websphere*">
<include name="*.jar"/>
</zipfileset>
<zipfileset dir="${dist.dir}" prefix="lib">
<include name="fortress*.jar"/>
<exclude name="fortressTomcatSentry*.jar"/>
<exclude name="fortressTomcat7Sentry*.jar"/>
<exclude name="fortressUserRegistry*.jar"/>
</zipfileset>
<zipfileset dir="${config.dir}" prefix="conf">
<include name="*.xml"/>
<include name="*.properties"/>
</zipfileset>
<zipfileset dir='${basedir}'>
<include name="*.txt"/>
</zipfileset>
</zip>
</target>
</project>