Skip to content

Commit

Permalink
Moved commonbuildjsp.xml to core, for GitHub
Browse files Browse the repository at this point in the history
  • Loading branch information
gangeli authored and Stanford NLP committed Aug 30, 2013
1 parent 05c772f commit 5ed61f0
Show file tree
Hide file tree
Showing 2 changed files with 119 additions and 1 deletion.
2 changes: 1 addition & 1 deletion build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@
description="Clean and re-compile." />

<!-- This file contains the .jsp build target -->
<import file="../../commonbuildjsp.xml" />
<import file="commonbuildjsp.xml" />

<!-- This runs the specified class, using a separate Java VM -->
<!-- Specify class to run via "run.class," arg, i.e., -->
Expand Down
118 changes: 118 additions & 0 deletions commonbuildjsp.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
<!-- JavaNLP ... include this file to find & compile .jsp servlets -->

<project name="commonbuildjsp" basedir="../..">

<!-- This classpath is needed for jasper and javac in this target -->
<path id="webapp.classpath">
<fileset dir="${project.core}/lib/tomcat">
<include name="*.jar"/>
</fileset>
<pathelement location="${build.path}"/>
<pathelement location="${project.core}/lib/commons-logging.jar"/>
</path>

<target name="jsp" depends="classpath,compile">
<!-- This target looks for all files that end with .jsp. It then
compiles each directory that those files reside in as a separate
webapp. Since there is currently only one webapp in all of core,
the effort taken to make this as general as possible instead of
hardcoding the path to that webapp was probably not effort well
spent. Still, one day there will be another webapp under core,
and then who will be laughing? I WILL.
November 2011: There are now four different webapps under
core. Yeah. I'm laughing. -->
<echo message="${ant.project.name}" />

<!-- This tool turns .jsp into .java -->
<taskdef classname="org.apache.jasper.JspC" name="jasper2" >
<classpath refid="webapp.classpath"/>
</taskdef>

<!-- This tool includes all sorts of useful stuff, like "if" and "for" -->
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="${project.core}/lib/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>

<!-- This is a list of all the jsp files under this project -->
<path id="webapp.jspfiles">
<fileset dir="${source.path}">
<include name="**/*.jsp"/>
</fileset>
</path>

<!-- Turn all of the absolute paths into relative paths -->
<pathconvert property="webapp.relativejspfiles"
refid="webapp.jspfiles">
<map from="${source.path}${file.separator}" to=""/>
</pathconvert>

<!-- Make sure the paths are all sorted -->
<sortlist property="webapp.sortedjspfiles"
value="${webapp.relativejspfiles}"
delimiter="${path.separator}" />

<!-- We use this property to make sure we don't compile the same
directory twice in a row. This is where it helps to assume
the paths are all sorted. -->
<property name="webapp.previouspath" value=""/>

<!-- Now, for each file we found earlier... -->
<for param="webapp.currentfile" list="${webapp.sortedjspfiles}"
delimiter="${path.separator}">
<sequential>
<!-- First extract the directory containing the file. This works
on both linux and windows, assuming we don't have any \ or /
in the file name, but that would just be silly. However, it
would still be nice to find a cleaner way of doing this. -->
<propertyregex property="webapp.path"
override="true"
input="@{webapp.currentfile}"
regexp="(.*)[\\/][^\\/]*.jsp"
select="\1" />

<!-- Then build the webapp in that path -->
<if>
<not>
<equals arg1="${webapp.path}" arg2="${webapp.previouspath}" />
</not>
<then>
<echo message="Building .jsp ${webapp.path}" />
<jasper2
validateXml="false"
uriroot="${source.path}/${webapp.path}"
webXmlFragment="${build.path}/${webapp.path}/WEB-INF/generated_web.xml"
outputDir="${build.path}/${webapp.path}/WEB-INF/src" />

<mkdir dir="${build.path}/${webapp.path}/WEB-INF/classes"/>
<mkdir dir="${build.path}/${webapp.path}/WEB-INF/lib"/>

<javac destdir="${build.path}/${webapp.path}/WEB-INF/classes"
optimize="${compile.optimize}"
encoding="${compile.encoding}"
debug="${compile.debug}"
srcdir="${build.path}/${webapp.path}/WEB-INF/src"
includeantruntime="false"
excludes="**/*.smap">
<classpath refid="webapp.classpath"/>
<classpath refid="classpath"/>
<classpath path="${build.path}"/>
<include name="**" />
<exclude name="tags/**" />
</javac>
</then>
</if>
<!-- Save the path we just looked at to ensure we don't
compile it twice in a row. The compiler will actually be
smart enough to not compile twice, but even using it to check
would be time consuming. -->
<propertycopy name="webapp.previouspath" override="true"
from="webapp.path"/>
</sequential>
</for>
</target>

</project>

0 comments on commit 5ed61f0

Please sign in to comment.