source: apps/susidns/src/build.xml @ ce043943

Last change on this file since ce043943 was ce043943, checked in by zzz <zzz@…>, 2 years ago

SusiDNS: Add import feature (ticket #2447)
Box overlap issue remains todo, see ticket #2419

  • Property mode set to 100644
File size: 10.6 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<project name="susidns" default="all" basedir=".">
3        <property name="jetty" value="../../jetty/" />
4        <property name="project" value="susidns" />
5        <property name="src" value="java/src" />
6        <property name="bin" value="./WEB-INF/classes" />
7        <property name="lib" value="${jetty}/jettylib" />
8        <property name="tmp" value="./tmp" />
9        <property name="jsp" value="./jsp" />
10        <path id="cp">
11                <pathelement path="${classpath}" />
12                <pathelement location="${bin}" />
13                <!-- commons-el MUST be first to ensure we get the right (2.2) version
14                  -  otherwise:
15                  -  Exception in thread "main" java.lang.NoSuchMethodError: javax.el.ExpressionFactory.newInstance()Ljavax/el/ExpressionFactory;
16                  -->
17                <pathelement location="${lib}/commons-el.jar" />
18                <pathelement location="${lib}/javax.servlet.jar"/>
19
20                <!-- following jars only present for debian builds -->
21                <pathelement location="${lib}/commons-logging.jar" />
22                <pathelement location="${lib}/jsp-api.jar" />
23                <pathelement location="${lib}/tomcat-api.jar" />
24                <pathelement location="${lib}/tomcat-util.jar" />
25                <pathelement location="${lib}/tomcat-util-scan.jar" />
26                <pathelement location="${lib}/jasper-el.jar" />
27                <pathelement location="lib/jstlel.jar" />
28
29                <pathelement location="lib/jstl.jar" />
30                <pathelement location="lib/standard.jar" />
31                <pathelement location="${lib}/jasper-runtime.jar" />
32                <pathelement location="${lib}/jetty-util.jar" />
33                <pathelement location="${lib}/jetty-i2p.jar" />
34                <pathelement location="${ant.home}/lib/ant.jar" />
35                <pathelement location="../../../core/java/build/i2p.jar" />
36                <pathelement location="../../addressbook/dist/addressbook.jar" />
37        </path>
38
39        <property name="javac.compilerargs" value="" />
40        <property name="javac.version" value="1.7" />
41        <property name="require.gettext" value="true" />
42
43    <condition property="no.bundle">
44        <isfalse value="${require.gettext}" />
45    </condition>
46
47        <target name="compile">
48                <mkdir dir="${bin}" />
49                <javac debug="true" deprecation="on" source="${javac.version}" target="${javac.version}" 
50                        includeAntRuntime="false"
51                        classpathref="cp" destdir="${bin}" srcdir="${src}" includes="**/*.java" >
52                        <compilerarg line="${javac.compilerargs}" />
53                </javac>
54        </target>
55
56    <target name="verifylibtaglibs" if="${with-libtaglibs-standard}" >
57        <!-- lib/jstlel.jar should be a symlink to the package jar.
58           - If the package jar is not there, we will still compile fine but it won't run,
59           - so catch it here.
60          -->
61        <fail message="libtaglibs-standard-jstlel-java package must be installed for debian builds">
62            <condition>
63                <not><available file="lib/jstlel.jar" type="file"/></not>
64            </condition>
65        </fail>
66    </target>
67
68    <target name="precompilejsp" depends="verifylibtaglibs" unless="precompilejsp.uptodate">
69        <delete file="WEB-INF/web-fragment.xml" />
70        <delete file="WEB-INF/web-out.xml" />
71        <mkdir dir="${tmp}" />
72        <echo message="Ignore any warning about /WEB-INF/web.xml not found" />
73        <!-- See apps/routerconsole/java/build.xml for important JspC build documentation -->
74        <java classname="net.i2p.servlet.util.JspC" fork="true" classpathref="cp" failonerror="true">
75            <!-- these are to detect tomcat version and reproducible build setting -->
76            <jvmarg value="-Dbuild.reproducible=${build.reproducible}" />
77            <jvmarg value="-Dwith-libtomcat8-java=${with-libtomcat8-java}" />
78            <jvmarg value="-Dwith-libtomcat9-java=${with-libtomcat9-java}" />
79            <jvmarg value="-Djasper.jar=${lib}/jasper-runtime.jar" />
80            <arg value="-d" />
81            <arg value="${tmp}" />
82            <arg value="-v" />
83            <arg value="-p" />
84            <arg value="i2p.susi.dns.jsp" />
85            <arg value="-webinc" />
86            <arg value="WEB-INF/web-fragment.xml" />
87            <arg value="-webapp" />
88            <arg value="./jsp" />
89        </java>
90        <javac debug="true" deprecation="on" source="${javac.version}" target="${javac.version}" 
91               includeAntRuntime="false"
92               destdir="${bin}" srcdir="${tmp}" includes="**/*.java" classpathref="cp">
93                <compilerarg line="${javac.compilerargs}" />
94         </javac>
95        <copy file="WEB-INF/web-template.xml" tofile="WEB-INF/web-out.xml" />
96        <loadfile property="jspc.web.fragment" srcfile="WEB-INF/web-fragment.xml" />
97        <replace file="WEB-INF/web-out.xml">
98            <replacefilter token="&lt;!-- precompiled servlets --&gt;" value="${jspc.web.fragment}" />
99        </replace>
100        <!-- Add multipart config to servlets that need them -->
101        <property name="__match1" value="&lt;servlet-class&gt;i2p.susi.dns.jsp." />
102        <property name="__match2" value="_jsp&lt;/servlet-class&gt;" />
103        <property name="__class1" value="${__match1}addressbook${__match2}" />
104        <property name="__multipart" value="&#10;
105       &lt;multipart-config&gt;&#10;
106           &lt;max-file-size&gt;67108864&lt;/max-file-size&gt;&#10;
107           &lt;max-request-size&gt;67108864&lt;/max-request-size&gt;&#10;
108           &lt;file-size-threshold&gt;262144&lt;/file-size-threshold&gt;&#10;
109       &lt;/multipart-config&gt;" />
110        <replace file="WEB-INF/web-out.xml">
111            <replacefilter token="${__class1}" value="${__class1}${__multipart}" />
112        </replace>
113    </target>
114
115    <uptodate property="precompilejsp.uptodate" targetfile="WEB-INF/web-out.xml">
116        <srcfiles dir= "." includes="jsp/*.jsp, WEB-INF/web-template.xml"/>
117    </uptodate>
118
119    <target name="all" depends="war"/> 
120
121    <target name="listChangedFiles" depends="warUpToDate" if="shouldListChanges" >
122        <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
123            <arg value="list" />
124            <arg value="changed" />
125            <arg value="." />
126        </exec>
127        <!-- \n in an attribute value generates an invalid manifest -->
128        <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
129            <arg value="-s" />
130            <arg value="[:space:]" />
131            <arg value="," />
132        </exec>
133    </target>
134
135    <target name="war" depends="compile, precompilejsp, bundle, warUpToDate" unless="war.uptodate" > 
136        <!-- set if unset -->
137        <property name="workspace.changes.tr" value="" />
138        <war destfile="${project}.war" webxml="WEB-INF/web-out.xml">
139                <fileset dir=".">
140                        <include name="WEB-INF/**/*.class"/>
141                        <include name="svg/*"/>
142                </fileset>
143            <manifest>
144                <attribute name="Implementation-Version" value="${full.version}" />
145                <attribute name="Built-By" value="${build.built-by}" />
146                <attribute name="Build-Date" value="${build.timestamp}" />
147                <attribute name="Base-Revision" value="${workspace.version}" />
148                <attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
149                <attribute name="X-Compile-Source-JDK" value="${javac.version}" />
150                <attribute name="X-Compile-Target-JDK" value="${javac.version}" />
151            </manifest>
152        </war>
153    </target>
154
155    <target name="warUpToDate">
156        <uptodate property="war.uptodate" targetfile="${project}.war">
157            <srcfiles dir= "." includes="WEB-INF/web-out.xml WEB-INF/**/*.class svg/*" />
158        </uptodate>
159        <condition property="shouldListChanges" >
160            <and>
161                <not>
162                    <isset property="war.uptodate" />
163                </not>
164                <isset property="mtn.available" />
165            </and>
166        </condition>
167    </target>
168
169    <target name="bundle" depends="compile, precompilejsp" unless="no.bundle">
170        <mkdir dir="build/messages-src" />
171        <!-- Update the messages_*.po files.
172             We need to supply the bat file for windows, and then change the fail property to true -->
173        <exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="${require.gettext}" >
174            <env key="JAVA_HOME" value="${java.home}" />
175            <arg value="./bundle-messages.sh" />
176        </exec>
177        <exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="${require.gettext}" >
178            <arg value="./bundle-messages.sh" />
179        </exec>
180                <!-- multi-lang is optional -->
181        <exec executable="sh" osfamily="windows" failifexecutionfails="false" >
182            <arg value="./bundle-messages.sh" />
183        </exec>
184        <javac source="${javac.version}" target="${javac.version}" 
185               includeAntRuntime="false"
186               srcdir="build/messages-src" destdir="${bin}">
187            <compilerarg line="${javac.compilerargs}" />
188        </javac>
189    </target>
190
191    <target name="extractSVGTags">
192        <mkdir dir="build/" />
193        <java classname="net.i2p.util.TranslateReader" fork="true" failonerror="true">
194            <classpath>
195                <pathelement location="../../../build/i2p.jar" />
196            </classpath>
197            <arg value="tag" />
198            <arg value="svg/" />
199            <arg value="build/HowSVG.java" />
200        </java>
201    </target>
202
203    <target name="poupdate" depends="compile, precompilejsp, extractSVGTags">
204        <!-- Update the messages_*.po files.  -->
205        <!-- set if unset -->
206        <property name="lg2" value="" />
207        <exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="true" >
208            <env key="LG2" value="${lg2}" />
209            <arg value="./bundle-messages.sh" />
210            <arg value="-p" />
211        </exec>
212        <exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="true" >
213            <env key="LG2" value="${lg2}" />
214            <arg value="./bundle-messages.sh" />
215            <arg value="-p" />
216        </exec>
217        <exec executable="sh" osfamily="windows" failifexecutionfails="true" failonerror="true" >
218            <env key="LG2" value="${lg2}" />
219            <arg value="./bundle-messages.sh" />
220            <arg value="-p" />
221        </exec>
222    </target>
223
224    <target name="clean">
225      <delete file="susidns.war" />
226      <delete>
227        <fileset dir="." includes="**/*.class" />
228        <fileset dir="." includes="tmp, build" />
229        <fileset dir="WEB-INF" includes="web-fragment.xml, web-out.xml" />
230      </delete>
231      <delete dir="${bin}" />
232      <delete dir="${tmp}" />
233      <delete dir="build" />
234    </target>
235    <target name="distclean" depends="clean" />
236</project>
Note: See TracBrowser for help on using the repository browser.