|
| 1 | +<?xml version="1.0" encoding="UTF-8"?> |
| 2 | + |
| 3 | +<project name="javacc_dependcy_parser" default="package" xmlns:ivy="antlib:org.apache.ivy.ant"> |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | + <!-- define some properties to --> |
| 8 | + <property name="build.dir" value="build"/> |
| 9 | + <property name="test.dir" value="build.test"/> |
| 10 | + <property name="dist.dir" value="dist"/> |
| 11 | + <property name="javacc.home" value="/vol/java/share/javacc"/> |
| 12 | + <property name="package" value="de.unibi.techfak.bibiserv.util.dependencyparser.javacc"/> |
| 13 | + <property name="package.dir" value="de/unibi/techfak/bibiserv/util/dependencyparser/javacc"/> |
| 14 | + <property name="src.dir" value="src"/> |
| 15 | + <property name="gen.src.dir" value="gen.src"/> |
| 16 | + <property name="test.src.dir" value="test"/> |
| 17 | + <property name="lib.dir" value="lib"/> |
| 18 | + |
| 19 | + |
| 20 | + |
| 21 | + |
| 22 | + <!-- getting access to environment vars --> |
| 23 | + <property environment="env"/> |
| 24 | + |
| 25 | + <!-- ################################ |
| 26 | + # check some conditions before # |
| 27 | + ################################ --> |
| 28 | + <fail message="The environment variable JAVACC_HOME is not set. Make sure that the JAVACC_HOME environment variable points to a JAVACC suite. Abbort ... " unless="env.JAVACC_HOME"/> |
| 29 | + |
| 30 | + <!-- include ant-contrib tasks --> |
| 31 | + <taskdef resource="net/sf/antcontrib/antcontrib.properties"/> |
| 32 | + |
| 33 | + |
| 34 | + |
| 35 | + <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --> |
| 36 | + |
| 37 | + <!-- load ivy-settings --> |
| 38 | + <!-- set ivy.settings.file property --> |
| 39 | + <if> |
| 40 | + <http url="http://bibiserv.techfak.uni-bielefeld.de/ivy-rep/ivysettings.xml" errorsbeginat="300"/> |
| 41 | + <then> |
| 42 | + <echo>Loading Ivy Settings from BiBiServ ... </echo> |
| 43 | + <ivy:settings url="http://bibiserv.techfak.uni-bielefeld.de/ivy-rep/ivysettings.xml"/> |
| 44 | + </then> |
| 45 | + <else> |
| 46 | + <echo>BiBiserv not available, load Ivy settings from ${user.home}/ivy-rep/ivy-settings.xml or if this file does not exist load default settings file</echo> |
| 47 | + <ivy:settings file="${user.home}/ivy-rep/ivysettings.xml"/> |
| 48 | + </else> |
| 49 | + </if> |
| 50 | + |
| 51 | + <!-- use ivy to resolve library dependencies --> |
| 52 | + <target name="resolve" description="retrieve dependencies with ivy"> |
| 53 | + <ivy:retrieve/> |
| 54 | + </target> |
| 55 | + |
| 56 | + <!-- publish current project in private ivy-repository --> |
| 57 | + <target name="publish" depends="package,resolve,_mercurial" description="publish package as modul on local ivy repository"> |
| 58 | + <ivy:publish resolver="private" validate="false" overwrite="true" artifactspattern="dist/[artifact].[ext]" pubrevision="${HG.TAG}_${HG.REVISION}"/> |
| 59 | + </target> |
| 60 | + |
| 61 | + |
| 62 | + <!-- install package from local ivy-repository on the server --> |
| 63 | + <target name="install" depends="package,_mercurial" description="install published package on bibiserv repository : ssh.user, ssh.key and ssh.passphrase(optional) must set as property!"> |
| 64 | + |
| 65 | + <!-- create local ivy-rep as install base --> |
| 66 | + <mkdir dir="ivy-rep"/> |
| 67 | + <ivy:publish resolver="local" validate="false" overwrite="true" artifactspattern="dist/[artifact].[ext]" pubrevision="${HG.TAG}_${HG.REVISION}"/> |
| 68 | + |
| 69 | + <!-- load ssh specify setting from bibiserv --> |
| 70 | + <property url="http://bibiserv.techfak.uni-bielefeld.de/ivy-rep/ivy_ssh.properties"/> |
| 71 | + |
| 72 | + <!-- check if ${ssh.key} and ${ssh.user} is set --> |
| 73 | + <fail unless="ssh.user" message="The Target <install> uses ssh key based authentication. Give the ssh user for ${ssh.host} as property 'ssh.user' as argument to the ant call!"/> |
| 74 | + <fail unless="ssh.key" message="The Target <install> uses ssh key based authentication. Give the location of your private key as property 'ssh.key' and optional a passphrase as property 'ssh.passphrase' as argument to the ant call!"/> |
| 75 | + |
| 76 | + |
| 77 | + <!-- copy local ivy-rep to bibiserv using porta.techfak.uni-bielefeld.de --> |
| 78 | + <scp todir="${ssh.user}@${ssh.host}:${ssh.basedir}/ivy-rep" passphrase="${ssh.passphrase}" keyfile="${ssh.key}"> |
| 79 | + <fileset dir="ivy-rep"/> |
| 80 | + </scp> |
| 81 | + |
| 82 | + <!-- change file AND directory permission on remote sevrver --> |
| 83 | + <sshexec host="${ssh.host}" username="${ssh.user}" keyfile="${ssh.key}" passphrase="${ssh.passphrase}" command="find -L ${ssh.basedir}/ivy-rep -type d -user ${ssh.user} | xargs chmod g+ws; find -L ${ssh.basedir}/ivy-rep -type f -user ${ssh.user} | xargs chmod g+w "/> |
| 84 | + </target> |
| 85 | + |
| 86 | + <!-- target, for internal use only --> |
| 87 | + <target name="_mercurial" description="get the latest tag name and revision number"> |
| 88 | + |
| 89 | + |
| 90 | + <exec executable="bash" outputproperty="HG.TAG"> |
| 91 | + <arg line = "-c "/> |
| 92 | + <arg value = "hg log | grep tag: | head -n 2 | grep -v tip | cut -f 2 -d ':' | sed -e 's/^ *//' "/> |
| 93 | + </exec> |
| 94 | + <exec executable="bash" outputproperty="HG.REVISION"> |
| 95 | + <arg line = "-c "/> |
| 96 | + <arg value = "LANG=en_US hg tip | grep changeset: | cut -f 2 -d ':' | sed -e 's/^ *//' "/> |
| 97 | + </exec> |
| 98 | + |
| 99 | + </target> |
| 100 | + |
| 101 | + <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --> |
| 102 | + |
| 103 | + |
| 104 | + <target name="clean" description="clean "> |
| 105 | + <delete dir="${gen.src.dir}"/> |
| 106 | + <delete dir="${build.dir}"/> |
| 107 | + <delete dir="${test.dir}"/> |
| 108 | + <delete dir="${dist.dir}"/> |
| 109 | + </target> |
| 110 | + |
| 111 | + <target name="clean_dist" depends="clean" description="clean everything"> |
| 112 | + <delete dir="${dist.dir}"/> |
| 113 | + <delete dir="ivy-rep"/> |
| 114 | + </target> |
| 115 | + |
| 116 | + <target name="mkdir"> |
| 117 | + <mkdir dir="${gen.src.dir}/${package.dir}"/> |
| 118 | + <mkdir dir="${build.dir}"/> |
| 119 | + <mkdir dir="${test.dir}"/> |
| 120 | + <mkdir dir="${dist.dir}"/> |
| 121 | + </target> |
| 122 | + |
| 123 | + |
| 124 | + |
| 125 | + <target name="javacc" depends="mkdir" description="generate parser (and interpreter) using javacc"> |
| 126 | + |
| 127 | + <javacc target="DependencyParser.jj" outputdirectory="${gen.src.dir}/${package.dir}" javacchome="${env.JAVACC_HOME}"/> |
| 128 | + <!-- Since JavaCC does not support packages (generate Java files in specify package) or I don't |
| 129 | + understand how to do that, the following replaceregexp task add one(!) import line in front of |
| 130 | + each generated Java File --> |
| 131 | + <replaceregexp> |
| 132 | + <regexp pattern="^(package ${package};${line.separator})?(.)"/> |
| 133 | + <substitution expression="package ${package};${line.separator}\2"/> |
| 134 | + <fileset dir="${gen.src.dir}/${package.dir}"> |
| 135 | + <include name="**/*.java"/> |
| 136 | + </fileset> |
| 137 | + </replaceregexp> |
| 138 | + </target> |
| 139 | + |
| 140 | + <target name="compile" depends="javacc,resolve"> |
| 141 | + <javac destdir="build" debug="true" debuglevel="lines,vars,source"> |
| 142 | + <src path="${gen.src.dir}"/> |
| 143 | + <src path="${src.dir}"/> |
| 144 | + <classpath> |
| 145 | + <fileset dir="${lib.dir}"/> |
| 146 | + </classpath> |
| 147 | + </javac> |
| 148 | + </target> |
| 149 | + |
| 150 | + <target name="compile_test" depends="compile"> |
| 151 | + <javac classpath="${build.dir}" srcdir="${test.src.dir}" destdir="${test.dir}"/> |
| 152 | + </target> |
| 153 | + |
| 154 | + <target name="test" depends="compile_test"> |
| 155 | + <junit haltonerror="true" haltonfailure="false"> |
| 156 | + <classpath> |
| 157 | + <fileset dir="${test.dir}"/> |
| 158 | + <fileset dir="${test.src.dir}"/> |
| 159 | + <fileset dir="${build.dir}"/> |
| 160 | + <fileset dir="${lib.dir}"/> |
| 161 | + </classpath> |
| 162 | + </junit> |
| 163 | + |
| 164 | + </target> |
| 165 | + |
| 166 | + <target name="package" depends="compile" description="generates a Jar package"> |
| 167 | + <!-- pack all classes --> |
| 168 | + <jar destfile="${dist.dir}/DependencyParser.jar" basedir="${build.dir}" includes="**/*.class"/> |
| 169 | + |
| 170 | + |
| 171 | + </target> |
| 172 | + |
| 173 | + |
| 174 | + |
| 175 | + |
| 176 | +</project> |
0 commit comments