| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| 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. |
| --> |
| <!-- ====================================================================== --> |
| <!-- --> |
| <!-- Ant build script for OpenBooks --> |
| <!-- --> |
| <!-- ====================================================================== --> |
| |
| <project name="OpenBooks" default="package"> |
| |
| <!-- ================================================================== --> |
| <property file="build.properties" /> |
| <!-- ================================================================== --> |
| <property name="jpa.provider" value="openjpa" /> |
| <!-- ================================================================== --> |
| <property name="build.mode" value="jse"/> |
| <!-- ================================================================== --> |
| <!-- root directory of Java Source files --> |
| <property name="src.dir" value="${basedir}/src/main/java"/> |
| <!-- ================================================================== --> |
| <!-- root directory of JSP and other web content files --> |
| <property name="web.dir" value="${basedir}/web"/> |
| <!-- ================================================================== --> |
| <!-- root directory of resource files e.g web.xml or persistence.xml --> |
| <property name="rsrc.dir" value="${basedir}/src/main/resources"/> |
| <!-- ================================================================== --> |
| <!-- JPA configuration file anchored by the persistence unit name --> |
| <property name="jpa.properties" value="META-INF/persistence.xml#OpenBooks"/> |
| <!-- ================================================================== --> |
| <!-- Application/Web Server type: --> |
| <!-- geronimo, was, tomcat, glassfish, or empty string for default --> |
| <property name="appserver" value=""/> |
| <!-- ================================================================== --> |
| <!-- Root directory of all derived artifacts --> |
| <property name="target.dir" value="${basedir}/target"/> |
| <!-- ================================================================== --> |
| <!-- root directory of compiled class files --> |
| <property name="classes.dir" value="${target.dir}/classes"/> |
| <!-- ================================================================== --> |
| <!-- root directory of generated canonical meta-model source files --> |
| <property name="generated.src.dir" value="${target.dir}/generated-metamodel/java"/> |
| <!-- ================================================================== --> |
| <!-- root directory of generated html for Java source files --> |
| <property name="generated.html.dir" value="${target.dir}/generated-html"/> |
| <!-- ================================================================== --> |
| <!-- directory for deployable artifacts --> |
| <property name="deploy.dir" value="${target.dir}/openbooks"/> |
| <!-- ================================================================== --> |
| |
| <path id="compile.classpath" |
| description="Compilation classpath requires OpenJPA specific library because of bytecode enhancement"> |
| <pathelement location="${src.dir}" /> |
| <pathelement location="${classes.dir}" /> |
| <pathelement location="${rsrc.dir}" /> |
| <fileset dir="${openjpa.lib}"> |
| <include name="*.jar" /> |
| </fileset> |
| </path> |
| |
| <path id="code.generation.classpath" |
| description=""> |
| <pathelement location="${classes.dir}" /> |
| <fileset dir="${antlr.lib}"> |
| <include name="*.jar" /> |
| </fileset> |
| <fileset dir="${antlr-runtime.lib}"> |
| <include name="*.jar" /> |
| </fileset> |
| </path> |
| |
| |
| <fileset id="canonical.metamodel" dir="${src.dir}" |
| description="Set of *.java files generated for static, cannonical domain model"> |
| <include name="**/*_.java"/> |
| </fileset> |
| |
| <target name="clean" description="Removes all *.class and generated metamodel source files"> |
| <delete dir="${target.dir}" failonerror="false"/> |
| <mkdir dir="${deploy.dir}"/> |
| <delete> |
| <fileset refid="canonical.metamodel"/> |
| </delete> |
| </target> |
| |
| <target name="info" |
| description="Prints environmental variables"> |
| <echo> |
| Builds OpenBooks demo application. |
| OpenJPA Library: ${openjpa.lib} |
| Build mode : ${build.mode} |
| Deploy Location: ${deploy.dir} |
| </echo> |
| </target> |
| |
| <target name="check-env" |
| description="Checks if required libraries exist" |
| depends="info"> |
| <available file="${openjpa.lib}" property="openjpa.exists"/> |
| |
| <fail unless="openjpa.exists">*** Error: |
| The directory for OpenJPA libraries can not be located at ${openjpa.lib}. |
| Make sure openjpa.lib property value is correct in build.properties file. |
| </fail> |
| <condition property="build.mode.is.valid"> |
| <or> |
| <equals arg1="${build.mode}" arg2="jse" casesensitive="false" trim="true"/> |
| <equals arg1="${build.mode}" arg2="jee" casesensitive="false" trim="true"/> |
| </or> |
| </condition> |
| <fail unless="build.mode.is.valid" message="Invalid build.mode ${build.mode}"/> |
| <condition property="build.mode.is.jse"> |
| <equals arg1="${build.mode}" arg2="jse" casesensitive="true" trim="true"/> |
| </condition> |
| <condition property="build.mode.is.jee"> |
| <equals arg1="${build.mode}" arg2="jee" casesensitive="true" trim="true"/> |
| </condition> |
| |
| <available file="${antlr.lib}" property="antlr.exists"/> |
| <!-- |
| <condition property="antlr.exists"> |
| <and> |
| <isset property="antlr.lib.exists" /> |
| <available classname="org.antlr.Tool" /> |
| </and> |
| </condition> |
| <fail unless="antlr.exists" message="ANTLR is missing from classpath"/> |
| --> |
| </target> |
| |
| <target name="generate-canonical-model" depends="check-env" |
| description="Generate canonical meta-model source"> |
| <mkdir dir="${generated.src.dir}" /> |
| <mkdir dir="${classes.dir}" /> |
| <!-- |
| javac has to be forked for maven-antrun-plugin builds |
| to work on Linux... |
| --> |
| <javac fork="true" srcdir="${src.dir}" destdir="${classes.dir}" debug="true" includeAntRuntime="false" > |
| <classpath refid="compile.classpath" /> |
| <include name="openbook/domain/*.java"/> |
| <compilerarg value="-Aopenjpa.metamodel=true" /> |
| <compilerarg value="-Aopenjpa.log=TRACE" /> |
| <compilerarg value="-s"/> |
| <compilerarg value="${generated.src.dir}" /> |
| </javac> |
| </target> |
| |
| <target name="compile" depends="generate-canonical-model" |
| description="Compile classes."> |
| <subant antfile="build.${build.mode}.xml" |
| target="compile" |
| inheritrefs="true" |
| inheritall="true" |
| buildpath="${basedir}"/> |
| </target> |
| |
| <target name="enhance" depends="check-env" |
| description="Enhance persistent domain classes."> |
| <java classname="org.apache.openjpa.enhance.PCEnhancer" fork="true"> |
| <arg value="-properties" /> |
| <arg value="${jpa.properties}" /> |
| <classpath refid="compile.classpath" /> |
| </java> |
| </target> |
| |
| <target name="package" description="Build and Package based on JSE or JEE mode" |
| depends="check-env, |
| clean, |
| generate-canonical-model, |
| compile, |
| enhance, |
| generate-source"> |
| <subant antfile="build.${build.mode}.xml" |
| target="package" |
| inheritrefs="true" |
| inheritall="true" |
| buildpath="${basedir}"/> |
| </target> |
| |
| <target name="build-parser" depends="check-env" if="antlr.exists"> |
| <java classname="org.antlr.Tool"> |
| <classpath refid="code.generation.classpath"/> |
| <arg value="-o"/> |
| <arg value="${generated.src.dir}/openbook/tools/parser"/> |
| <arg value="-debug"/> |
| <arg value="${rsrc.dir}/META-INF/Java.g"/> |
| </java> |
| </target> |
| <!-- Generating viewable syntax colored Java code as html is to be split --> |
| <!-- for JSE and JEE mode for some differences in Swing based browser --> |
| <!-- versus general purpose web browsers. Swing based browser treats --> |
| <!-- line breaks, white spaces differently becuase it does not recognize --> |
| <!-- some critical CSS directives in this regard. This anamoly is --> |
| <!-- accounted for by customizing Java2HTMLConverter accordingly --> |
| <!-- see the respective target's options to notice the difference --> |
| <target name="generate-source" depends="check-env" if="antlr.exists"> |
| <javac fork="true" srcdir="${src.dir}" destdir="${classes.dir}"> |
| <include name="openbook/tools/**/*.java"/> |
| <exclude name="openbook/tools/**/Test*.java"/> |
| <classpath refid="code.generation.classpath"/> |
| </javac> |
| <taskdef name="java2html" classname="openbook.tools.ant.Java2HTMLConverterTask"> |
| <classpath refid="code.generation.classpath"/> |
| </taskdef> |
| <delete dir="${generated.html.dir}"></delete> |
| <mkdir dir="${generated.html.dir}"/> |
| <copy file="${rsrc.dir}/java.css" todir="${generated.html.dir}"/> |
| <subant antfile="build.${build.mode}.xml" |
| target="generate-source-with-options" |
| inheritrefs="true" |
| inheritall="true" |
| buildpath="${basedir}"/> |
| |
| </target> |
| |
| </project> |