<?xml version="1.0" encoding="UTF-8"?> <project name="Philae project" default="usage" basedir="." xmlns:mcr="antlib:org.mycore.buildtools"> <import file="${basedir}/common-modules.xml" /> <!-- =================================================================== --> <!-- Help on usage --> <!-- =================================================================== --> <target name="usage" description="Display main targets by running 'ant -projecthelp'"> <java classname="org.apache.tools.ant.Main" fork="false"> <arg value="-projecthelp" /> </java> </target> <!-- =================================================================== --> <!-- Remove the user created directories and files --> <!-- =================================================================== --> <target name="clean" description="Removes all generated files, cleaning up"> <delete dir="${build}" /> <mkdir dir="${build}" /> <mkdir dir="${build.cli.bin}" /> <mkdir dir="${build.cli.classes}" /> <mkdir dir="${build.cli.config}" /> <mkdir dir="${build.cli.lib}" /> <mkdir dir="${build.cli.schema}" /> <mkdir dir="${build.cli.xsl}" /> <mkdir dir="${build.config}" /> <mkdir dir="${build.content}" /> <mkdir dir="${build.webapps}" /> </target> <!-- =================================================================== --> <!-- Resolve external jars --> <!-- =================================================================== --> <condition property="pom.file.exists"> <available file="${stage-one.config}/pom.xml" /> </condition> <target name="copy.pom" unless="pom.file.exists"> <copy file="${stage-one.config}/pom.xml.template" tofile="${stage-one.config}/pom.xml" /> </target> <target name="resolve" description="resolve libraries" depends="clean, copy.pom"> <echo level="info">Resolve jars with maven</echo> <exec executable="mvn"> <arg value="-f${stage-one.config}/pom.xml" /> <arg value="-Dbuild.directory=${build.cli}" /> <arg value="dependency:copy-dependencies" /> </exec> </target> <!-- =================================================================== --> <!-- Create all directories --> <!-- =================================================================== --> <target name="create.directories" depends="init" description="Creates the neccessary data directory structure"> <echo level="info">Create all directories</echo> <modulePreHook target="create.directories" /> <mkdir dir="${MCR.datadir}" /> <mkdir dir="${MCR.savedir}" /> <mkdir dir="${MCR.EHCache.diskStore.path}" /> <mkdir dir="${MCR.IFS.ContentStore.IFS2.URI}" /> <mkdir dir="${MCR.Metadata.Store.BaseDir}" /> <moduleHook target="create.directories" /> </target> <!-- =================================================================== --> <!-- Compiles all application classes --> <!-- =================================================================== --> <target name="create.jar" depends="compile" description="creates stage-one.jar"> <echo level="info">Compiling java classes</echo> <modulePreHook target="create.jar" /> <moduleHook target="create.jar" /> </target> <target name="compile" depends="init" description="Compiles all sources under the build directory"> <modulePreHook target="compile" /> <moduleHook target="compile" /> </target> <!-- =================================================================== --> <!-- Create scripts in cli/... like mycore.sh a.s.o. --> <!-- =================================================================== --> <target name="create.scripts" depends="init, config, create.scripts.unix" description="Create commandline scripts"> <echo>Unpack shell scripts</echo> <fileset id="module.fileset" dir="${build.cli.lib}" includes="*.jar"> <mcr:appModuleSelector /> </fileset> <unjar dest="${build.cli}"> <fileset refid="module.fileset" /> <patternset> <include name="bin/*.sh" /> </patternset> </unjar> <modulePreHook target="create.scripts" /> <moduleHook target="create.scripts" /> <chmod perm="755"> <fileset dir="${build.cli.bin}" includes="*.sh" /> </chmod> </target> <condition property="persistence.file.exists"> <available file="${stage-one.config}/persistence.xml" /> </condition> <target name="copy.persistence" unless="persistence.file.exists"> <copy file="${stage-one.config}/persistence.xml.template" tofile="${stage-one.config}/persistence.xml" /> </target> <condition property="log4j2.file.exists"> <available file="${stage-one.config}/log4j2.xml" /> </condition> <target name="copy.log4j2" unless="log4j2.file.exists"> <copy file="${stage-one.config}/log4j2.xml.template" tofile="${stage-one.config}/log4j2.xml" /> </target> <target name="config" depends="init, copy.persistence, copy.log4j2" description="generates mycore.properties file"> <delete file="${build.cli.config}/mycore.properties" /> <modulePreHook target="config" /> <copy todir="${build.cli.config}" overwrite="true"> <fileset dir="${stage-one.config}" includes="hosts.xml" /> <fileset dir="${stage-one.config}" includes="log4j2.xml" /> </copy> <mkdir dir="${build.cli.config}/META-INF" /> <copy todir="${build.cli.config}/META-INF" overwrite="true"> <fileset dir="${stage-one.config}" includes="persistence.xml" /> </copy> <delete dir="${build.cli.config}/META-INF/resources" /> <moduleHook target="config" /> <mcr:config propertyfile="${build.cli.config}/mycore.properties" mergeFile="${stage-one.config}/mycore.private.properties" /> </target> <target name="create.scripts.unix" if="os.is.unix"> <modulePreHook target="create.scripts.unix" /> <antcall target="create.scripts.unix.write"> <param name="mycore.cmd.file" value="mycore.sh" /> <param name="mycore.cmd.class" value="org.mycore.frontend.cli.MCRCommandLineInterface $*" /> <param name="mycore.cmd.dir" value="${build}" /> </antcall> <moduleHook target="create.scripts.unix" /> </target> <target name="create.scripts.unix.write"> <property name="tmp.cmd.file" value="${build.cli.bin}/${mycore.cmd.file}" /> <echo>Creating ${mycore.cmd.file} to invoke ${mycore.cmd.class}</echo> <echo file="${tmp.cmd.file}" append="false"> <![CDATA[#!/bin/sh # # This shell script invokes the MyCoRe class ${mycore.cmd.class} # # Generated by ant using the target "create.scripts". # CLASSPATH=${build.classpath.translated} export CLASSPATH $JAVA_HOME/bin/java -Xmx${java.maxmemory} -Xms${java.maxmemory} -DMCR.AppName=${app.name} -Djava.awt.headless=true $OPTION ${mycore.cmd.class} ]]> </echo> <chmod file="${tmp.cmd.file}" perm="755" /> </target> <!-- =================================================================== --> <!-- Install Jetty --> <!-- =================================================================== --> <target name="create.jetty" if="os.is.unix"> <antcall target="jetty.unix.write"> <param name="cmd.file" value="jettystart.sh" /> <param name="cmd.value" value="-Djetty.stop.port=${jetty.stop.port} -Djetty.port=${jetty.start.port} -q -f ${stage-one.config}/jetty-pom.xml jetty:run" /> </antcall> <antcall target="jetty.unix.write"> <param name="cmd.file" value="jettystop.sh" /> <param name="cmd.value" value="-Djetty.stop.port=${jetty.stop.port} -q -f ${stage-one.config}/jetty-pom.xml jetty:stop" /> </antcall> <copy todir="${build}" overwrite="true"> <fileset dir="${stage-one.config}" includes="jetty-realm.properties" /> </copy> </target> <target name="jetty.unix.write"> <mkdir dir="${build.cli.bin}" /> <echo level="info">Creating ${build.cli.bin}/${cmd.file} to invoke mvn ${cmd.value}</echo> <echo file="${build.cli.bin}/${cmd.file}" append="false"> <![CDATA[#!/bin/sh export INSTALL_HOME=$PHILAE_HOME cd ${build} mvn -DMCR.AppName=${app.name} ${cmd.value} ]]> </echo> <chmod perm="755" file="${build.cli.bin}/${cmd.file}" /> </target> <!-- =================================================================== --> <!-- Load all classifications --> <!-- =================================================================== --> <target name="create.class" depends="init" description="Load all classifications"> <delete dir="${MCR.EHCache.diskStore.path}" /> <mkdir dir="${MCR.EHCache.diskStore.path}" /> <delete dir="${build.content}/classifications" /> <mkdir dir="${build.content}/classifications" /> <echo>Prepare classifications</echo> <fileset id="module.fileset" dir="${build.cli.lib}" includes="*.jar"> <mcr:appModuleSelector /> </fileset> <unjar dest="${build.content}"> <fileset refid="module.fileset" /> <patternset> <include name="classifications/**" /> </patternset> </unjar> <modulePreHook target="create.class" /> <moduleHook target="create.class" /> <echo level="info"> run ${ant.project.name} load classifications from ${build.content}/classifications</echo> <property name="commands.file" value="${build}/commands.txt" /> <delete file="${commands.file}" /> <echo file="${commands.file}" append="false"> <![CDATA[ update all classifications from directory ${build.content}/classifications ]]> </echo> <antcall target="invoke.cli"> <param name="cli.directory" value="${build}" /> <param name="cli.command" value="process ${commands.file}" /> </antcall> <delete file="${commands.file}" /> </target> <!-- =================================================================== --> <!-- Load initialize user entries in the database --> <!-- =================================================================== --> <target name="create.users" depends="init" description="initialize user system"> <modulePreHook target="create.users" /> <property name="commands.file" value="${build}/commands.txt" /> <echo file="${commands.file}" append="false"> init superuser </echo> <antcall target="invoke.cli"> <param name="cli.directory" value="${stage-one.config}" /> <param name="cli.command" value="process ${commands.file}" /> </antcall> <delete file="${commands.file}" /> <moduleHook target="create.users" /> </target> <!-- =================================================================== --> <!-- Load default ACL rules --> <!-- =================================================================== --> <target name="create.default-rules" depends="init" description="Load default ACL rules"> <echo>Prepare default-rules</echo> <fileset id="module.fileset" dir="${build.cli.lib}" includes="*.jar"> <mcr:appModuleSelector /> </fileset> <unjar dest="${build}"> <fileset refid="module.fileset" /> <patternset> <include name="config/*/permissions*.xml" /> <include name="config/*/grant*.xml" /> </patternset> </unjar> <modulePreHook target="create.default-rules" /> <moduleHook target="create.default-rules" /> </target> <!-- =================================================================== --> <!-- Build the web application directory and copy webpages --> <!-- =================================================================== --> <target name="create.webapp" depends="init, i18n" description="Build the complete web application"> <echo level="info">Creating web application in directory ${build.webapps}</echo> <mkdir dir="${build.webapps}" /> <mkdir dir="${build.webapps}/editor" /> <mkdir dir="${build.webapps}/WEB-INF" /> <mkdir dir="${build.webapps}/WEB-INF/classes" /> <mkdir dir="${build.webapps}/WEB-INF/classes/xsl" /> <mkdir dir="${build.webapps}/WEB-INF/lib" /> <modulePreHook target="create.webapp" /> <antcall target="create.webapp.base" /> <moduleHook target="create.webapp" /> </target> <target name="i18n"> <delete file="${build.webapps}/WEB-INF/classes/messages_de.properties" /> <delete file="${build.webapps}/WEB-INF/classes/messages_en.properties" /> <delete file="${build.webapps}/WEB-INF/classes/messages_es.properties" /> <delete file="${build.webapps}/WEB-INF/classes/messages_fr.properties" /> <delete file="${build.webapps}/WEB-INF/classes/messages_it.properties" /> <delete file="${build.webapps}/WEB-INF/classes/messages_ja.properties" /> <modulePreHook target="i18n" /> <moduleHook target="i18n" /> <copy todir="${build.webapps}/WEB-INF/classes"> <fileset dir="${build.cli.config}" includes="messages*.properties" /> </copy> </target> <target name="create.webapp.base"> <copy todir="${build.webapps}/WEB-INF/lib"> <fileset dir="${build.cli.lib}" includes="*.jar" /> <fileset dir="${build.cli.lib}" includes="*.zip" /> </copy> <copy todir="${build.webapps}" overwrite="true"> <fileset dir="${build.cli.config}" includes="FileContentTypes.xml" /> <fileset dir="${build.cli.config}" includes="hosts.xml" /> <fileset dir="${build.cli.config}" includes="log4j2.xml" /> </copy> <copy todir="${build.webapps}/WEB-INF/classes"> <fileset dir="${build.cli.classes}" includes="**/*" /> <fileset dir="${build.cli.config}" includes="*.xml" /> <fileset dir="${build.cli.config}" includes="META-INF/*.xml" /> <fileset dir="${build.cli.config}" includes="mycore.properties" /> </copy> <fileset id="module.fileset" dir="${build.cli.lib}" includes="*.jar"> <mcr:appModuleSelector /> </fileset> <unjar dest="${build.webapps}/WEB-INF/classes"> <fileset refid="module.fileset" /> <patternset> <include name="xsl/**" /> </patternset> </unjar> </target> </project> <!-- ======================== End of file ======================== -->