-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- ====================================================================== -->
-<!-- Ant build file (http://ant.apache.org/) for Ant 1.6.2 or above. -->
-<!-- ====================================================================== -->
-
-<!-- ====================================================================== -->
-<!-- ===================== - DO NOT EDIT THIS FILE! - ===================== -->
-<!-- ====================================================================== -->
-<!-- -->
-<!-- Any modifications will be overwritten. -->
-<!-- -->
-<!-- Generated by Maven Ant Plugin on 3/8/14 4:23 PM -->
-<!-- See: http://maven.apache.org/plugins/maven-ant-plugin/ -->
-<!-- -->
-<!-- ====================================================================== -->
-
-<project name="jflex-from-maven" default="package" basedir=".">
-
- <!-- ====================================================================== -->
- <!-- Build environment properties -->
- <!-- ====================================================================== -->
-
- <property file="${user.home}/.m2/maven.properties"/>
- <property file="maven-build.properties"/>
-
- <property name="maven.build.finalName" value="jflex-1.5.0"/>
- <property name="maven.build.dir" value="target"/>
- <property name="maven.build.outputDir" value="${maven.build.dir}/classes"/>
- <property name="maven.build.srcDir.0" value="src/main/java"/>
- <property name="maven.build.resourceDir.0" value="src/main/resources"/>
- <property name="maven.build.testOutputDir" value="${maven.build.dir}/test-classes"/>
- <property name="maven.build.testDir.0" value="src/test/java"/>
- <property name="maven.build.testResourceDir.0" value="src/test/resources"/>
- <property name="maven.test.reports" value="${maven.build.dir}/test-reports"/>
- <property name="maven.reporting.outputDirectory" value="${maven.build.dir}/site"/>
-
- <property name="maven.repo.local" value="${user.home}/.m2/repository"/>
- <property name="maven.settings.offline" value="false"/>
- <property name="maven.settings.interactiveMode" value="true"/>
-
- <!-- ====================================================================== -->
- <!-- Defining classpaths -->
- <!-- ====================================================================== -->
-
- <path id="build.classpath">
- <pathelement location="${maven.repo.local}/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"/>
- <pathelement location="${maven.repo.local}/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar"/>
- </path>
- <path id="build.test.classpath">
- <pathelement location="${maven.repo.local}/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"/>
- <pathelement location="${maven.repo.local}/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar"/>
- <pathelement location="${maven.repo.local}/junit/junit/4.11/junit-4.11.jar"/>
- <pathelement location="${maven.repo.local}/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"/>
- </path>
-
- <!-- ====================================================================== -->
- <!-- Cleaning up target -->
- <!-- ====================================================================== -->
-
- <target name="clean" description="Clean the output directory">
- <delete dir="${maven.build.dir}"/>
+<?xml version="1.0"?>
+<project name="JFlex" default="help">
+
+ <property name="version" value="1.5.0" />
+ <property name="bootstrap.version" value="1.5.0" />
+ <property name="junit.version" value="4.11" />
+ <property name="cup.version" value="11a" />
+ <property name="java.source.version" value="1.5" />
+
+ <!-- use any of these files to override properties -->
+ <property file="build.properties" />
+ <property file="${user.home}/.jflex.properties" />
+
+ <!-- location of development tools necessary for the build -->
+ <property name="lib.dir" value="lib"/>
+
+ <!-- override these if you want to use your own versions -->
+ <property name="bootstrap.jflex.jar" value="${lib.dir}/jflex-${bootstrap.version}.jar" />
+ <property name="cup.jar" value="${lib.dir}/java-cup-${cup.version}.jar" />
+ <property name="junit.jar" value="${lib.dir}/junit-${junit.version}.jar" />
+
+ <!-- where to get tool jars from -->
+ <property name="maven.central.url" value="http://central.maven.org/maven2" />
+ <property name="bootstrap.jflex.jar.url"
+ value="${maven.central.url}/de/jflex/jflex/${bootstrap.version}/jflex-${bootstrap.version}.jar" />
+ <property name="junit.jar.url"
+ value="${maven.central.url}/junit/junit/${junit.version}/junit-${junit.version}.jar" />
+
+ <!-- where build output goes, including the jflex jar -->
+ <property name="build.dir" value="build"/>
+ <property name="generated.sources.dir" value="${build.dir}/generated-sources"/>
+ <property name="compile.output.dir" value="${build.dir}/classes"/>
+ <property name="test.compile.output.dir" value="${build.dir}/test-classes"/>
+ <property name="tests.dir" value="${build.dir}/tests"/>
+
+ <!-- where the output jar goes -->
+ <property name="output.jar.name" value="${build.dir}/jflex-${version}.jar" />
+
+ <target name="help" description="show help message">
+ <echo message="Ant build file for JFlex. Useful targets:"/>
+ <echo message=""/>
+ <echo message="gettools: download development tools for the build"/>
+ <echo message="clean: remove all generated and compiled files"/>
+ <echo message="compile: generates sources and compiles non-test classes"/>
+ <echo message="jar: make ${output.jar.name}"/>
+ <echo message="build: complete build from scratch (clean jar)"/>
+ <echo message="test: run the unit tests"/>
+ <echo message=""/>
+ <echo message="Use the gettool target or override the *.jar properties"/>
+ <echo message="before you do the first build."/>
+ </target>
+
+ <target name="gettools" description="download development tools">
+ <get src="${bootstrap.jflex.jar.url}" dest="${bootstrap.jflex.jar}"/>
+ <get src="${junit.jar.url}" dest="${junit.jar}"/>
</target>
- <!-- ====================================================================== -->
- <!-- Compilation target -->
- <!-- ====================================================================== -->
+ <target name="build" depends="clean,jar"
+ description="complete build from scratch (clean jar)"/>
- <target name="compile" depends="get-deps" description="Compile the code">
- <mkdir dir="${maven.build.outputDir}"/>
- <javac destdir="${maven.build.outputDir}"
- nowarn="false"
- debug="true"
- optimize="false"
- deprecation="true"
- target="1.5"
- verbose="false"
- fork="false"
- source="1.5">
- <src>
- <pathelement location="${maven.build.srcDir.0}"/>
- </src>
- <classpath refid="build.classpath"/>
- </javac>
- <copy todir="${maven.build.outputDir}">
- <fileset dir="${maven.build.resourceDir.0}"/>
- </copy>
+ <target name="clean" description="remove all generated and compiled files">
+ <delete includeemptydirs="true">
+ <fileset dir="${build.dir}" includes="**/*"/>
+ </delete>
</target>
- <!-- ====================================================================== -->
- <!-- Test-compilation target -->
- <!-- ====================================================================== -->
+ <target name="jar" depends="compile,-copy-resources"
+ description="make ${output.jar.name}">
+ <jar basedir="${compile.output.dir}" jarfile="${output.jar.name}">
+ <manifest>
+ <attribute name="Main-Class" value="jflex.Main"/>
+ </manifest>
+ </jar>
+ </target>
- <target name="compile-tests"
- depends="compile"
- description="Compile the test code"
- unless="maven.test.skip">
- <mkdir dir="${maven.build.testOutputDir}"/>
- <javac destdir="${maven.build.testOutputDir}"
- nowarn="false"
- debug="true"
- optimize="false"
- deprecation="true"
- target="1.5"
- verbose="false"
- fork="false"
- source="1.5">
- <src>
- <pathelement location="${maven.build.testDir.0}"/>
- </src>
- <classpath>
- <path refid="build.test.classpath"/>
- <pathelement location="${maven.build.outputDir}"/>
- </classpath>
+ <target name="compile" depends="-generate-scanner,-generate-parser"
+ description="generate sources and compile all non-test classes">
+ <mkdir dir="${compile.output.dir}" />
+ <javac destdir="${compile.output.dir}"
+ target="${java.source.version}"
+ source="${java.source.version}"
+ debug="on"
+ includeantruntime="true">
+ <src path="src/main/java"/>
+ <src path="${generated.sources.dir}"/>
</javac>
- <copy todir="${maven.build.testOutputDir}">
- <fileset dir="${maven.build.testResourceDir.0}"/>
- </copy>
</target>
-
- <!-- ====================================================================== -->
- <!-- Run all tests -->
- <!-- ====================================================================== -->
-
- <target name="test"
- depends="compile-tests, junit-missing"
- unless="junit.skipped"
- description="Run the test cases">
- <mkdir dir="${maven.test.reports}"/>
- <junit printSummary="yes" haltonerror="true" haltonfailure="true" fork="true" dir=".">
- <sysproperty key="basedir" value="."/>
- <formatter type="xml"/>
- <formatter type="plain" usefile="false"/>
+
+ <target name="test" depends="compile,-copy-resources,-compile-test">
+ <mkdir dir="${tests.dir}"/>
+ <junit dir="." printsummary="true" errorproperty="junit.failed">
<classpath>
- <path refid="build.test.classpath"/>
- <pathelement location="${maven.build.outputDir}"/>
- <pathelement location="${maven.build.testOutputDir}"/>
+ <file file="${junit.jar}"/>
+ <pathelement location="${compile.output.dir}"/>
+ <pathelement location="${test.compile.output.dir}"/>
</classpath>
- <batchtest todir="${maven.test.reports}" unless="test">
- <fileset dir="${maven.build.testDir.0}">
- <include name="**/*Test.java"/>
- <include name="**/*Tests.java"/>
- <exclude name="**/*Abstract*Test.java"/>
- </fileset>
- </batchtest>
- <batchtest todir="${maven.test.reports}" if="test">
- <fileset dir="${maven.build.testDir.0}">
- <include name="**/${test}.java"/>
- <exclude name="**/*Abstract*Test.java"/>
+ <assertions>
+ <enable/>
+ </assertions>
+ <batchtest fork="yes" todir="${tests.dir}">
+ <formatter type="plain"/>
+ <fileset dir="src/test/java">
+ <include name="**/*Test*.java"/>
</fileset>
</batchtest>
</junit>
+ <fail if="junit.failed"/>
</target>
- <target name="test-junit-present">
- <available classname="junit.framework.Test" property="junit.present"/>
+ <target name="-copy-resources">
+ <copy todir="${compile.output.dir}">
+ <fileset dir="src/main/resources"/>
+ </copy>
</target>
- <target name="test-junit-status"
- depends="test-junit-present">
- <condition property="junit.missing">
- <and>
- <isfalse value="${junit.present}"/>
- <isfalse value="${maven.test.skip}"/>
- </and>
- </condition>
- <condition property="junit.skipped">
- <or>
- <isfalse value="${junit.present}"/>
- <istrue value="${maven.test.skip}"/>
- </or>
- </condition>
+ <target name="-generate-scanner">
+ <taskdef classname="jflex.anttask.JFlexTask"
+ name="jflex" classpath="${bootstrap.jflex.jar}"/>
+ <mkdir dir="${generated.sources.dir}/jflex"/>
+ <jflex file="src/main/jflex/LexScan.flex"
+ outdir="${generated.sources.dir}/jflex"
+ skeleton="src/main/jflex/skeleton.nested"
+ nobak="on"/>
</target>
- <target name="junit-missing"
- depends="test-junit-status"
- if="junit.missing">
- <echo>=================================== WARNING ===================================</echo>
- <echo> JUnit is not present in your $ANT_HOME/lib directory. Tests not executed.</echo>
- <echo>===============================================================================</echo>
+ <target name="-generate-parser">
+ <taskdef classname="java_cup.anttask.CUPTask"
+ name="cup" classpath="${cup.jar}"/>
+ <mkdir dir="${generated.sources.dir}"/>
+ <cup srcfile="src/main/cup/LexParse.cup"
+ destdir="${generated.sources.dir}"
+ interface="true"
+ parser="LexParse"/>
</target>
-
- <!-- ====================================================================== -->
- <!-- Javadoc target -->
- <!-- ====================================================================== -->
-
- <target name="javadoc" description="Generates the Javadoc of the application">
- <javadoc sourcepath="${maven.build.srcDir.0}"
- packagenames="*"
- destdir="${maven.reporting.outputDirectory}/apidocs"
- access="protected"
- old="false"
- verbose="false"
- version="true"
- use="true"
- author="true"
- splitindex="false"
- nodeprecated="false"
- nodeprecatedlist="false"
- notree="false"
- noindex="false"
- nohelp="false"
- nonavbar="false"
- serialwarn="false"
- charset="ISO-8859-1"
- linksource="false"
- breakiterator="false"/>
+
+ <target name="-compile-test" depends="compile">
+ <mkdir dir="${test.compile.output.dir}"/>
+ <javac srcdir="src/test/java"
+ destdir="${test.compile.output.dir}"
+ target="${java.source.version}"
+ source="${java.source.version}"
+ classpath="${compile.output.dir}:${junit.jar}"
+ includeantruntime="true"/>
</target>
- <!-- ====================================================================== -->
- <!-- Package target -->
- <!-- ====================================================================== -->
-
- <target name="package" depends="compile,test" description="Package the application">
- <jar jarfile="${maven.build.dir}/${maven.build.finalName}.jar"
- compress="true"
- index="false"
- basedir="${maven.build.outputDir}"
- excludes="**/package.html">
- <manifest>
- <attribute name="Main-Class"
- value="jflex.Main"/>
- </manifest>
- </jar>
+ <target depends="compile" name="javadoc">
+ <javadoc packagenames="jflex" sourcepath="src/main/java:build/generated-sources" destdir="javadoc" version="true" />
</target>
-
- <!-- ====================================================================== -->
- <!-- A dummy target for the package named after the type it creates -->
- <!-- ====================================================================== -->
-
- <target name="jar" depends="package" description="Builds the jar for the application"/>
-
- <!-- ====================================================================== -->
- <!-- Download dependencies target -->
- <!-- ====================================================================== -->
-
- <target name="test-offline">
- <condition property="maven.mode.offline">
- <equals arg1="${maven.settings.offline}" arg2="true"/>
- </condition>
- </target>
-
- <target name="get-deps"
- depends="test-offline"
- description="Download all dependencies"
- unless="maven.mode.offline">
- <mkdir dir="${maven.repo.local}"/>
- <mkdir dir="${maven.repo.local}/org/apache/ant/ant/1.7.0"/>
- <get src="https://oss.sonatype.org/content/repositories/snapshots/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"
- dest="${maven.repo.local}/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"
- usetimestamp="false"
- ignoreerrors="true"/>
- <get src="http://repo.maven.apache.org/maven2/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"
- dest="${maven.repo.local}/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"
- usetimestamp="false"
- ignoreerrors="true"/>
- <mkdir dir="${maven.repo.local}/org/apache/ant/ant-launcher/1.7.0"/>
- <get src="https://oss.sonatype.org/content/repositories/snapshots/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar"
- dest="${maven.repo.local}/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar"
- usetimestamp="false"
- ignoreerrors="true"/>
- <get src="http://repo.maven.apache.org/maven2/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar"
- dest="${maven.repo.local}/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar"
- usetimestamp="false"
- ignoreerrors="true"/>
- <mkdir dir="${maven.repo.local}/junit/junit/4.11"/>
- <get src="https://oss.sonatype.org/content/repositories/snapshots/junit/junit/4.11/junit-4.11.jar"
- dest="${maven.repo.local}/junit/junit/4.11/junit-4.11.jar"
- usetimestamp="false"
- ignoreerrors="true"/>
- <get src="http://repo.maven.apache.org/maven2/junit/junit/4.11/junit-4.11.jar"
- dest="${maven.repo.local}/junit/junit/4.11/junit-4.11.jar"
- usetimestamp="false"
- ignoreerrors="true"/>
- <mkdir dir="${maven.repo.local}/org/hamcrest/hamcrest-core/1.3"/>
- <get src="https://oss.sonatype.org/content/repositories/snapshots/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"
- dest="${maven.repo.local}/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"
- usetimestamp="false"
- ignoreerrors="true"/>
- <get src="http://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"
- dest="${maven.repo.local}/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"
- usetimestamp="false"
- ignoreerrors="true"/>
- </target>
-
</project>