source: apps/susimail/build.xml @ 2de36ee

Last change on this file since 2de36ee was 79d8a0e, checked in by zzz <zzz@…>, 3 years ago

build: New poupdate-source target

  • Property mode set to 100644
File size: 8.1 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<project basedir="." default="all" name="susimail">
3    <target name="all" depends="clean, build" />
4    <target name="build" depends="builddep, jar" />
5    <target name="builddep">
6        <!-- run from top level build.xml to get dependencies built -->
7    </target>
8
9    <property name="javac.compilerargs" value="" />
10    <property name="javac.version" value="1.7" />
11    <property name="require.gettext" value="true" />
12
13    <condition property="no.bundle">
14        <isfalse value="${require.gettext}" />
15    </condition>
16    <condition property="depend.available">
17        <typefound name="depend" />
18    </condition>
19    <target name="depend" if="depend.available">
20        <depend
21            cache="../../build"
22            srcdir="./src/src" 
23            destdir="./src/WEB-INF/classes" >
24            <!-- Depend on classes instead of jars where available -->
25            <classpath>
26                <pathelement location="../../core/java/build/obj" />
27                <pathelement location="../jetty/jettylib/javax.servlet.jar" />
28                <!-- jsp-api.jar only present for debian builds -->
29                <pathelement location="../jetty/jettylib/jsp-api.jar" />
30                <!-- tomcat-api.jar only present for debian builds -->
31                <pathelement location="../jetty/jettylib/tomcat-api.jar" />
32                <pathelement location="../jetty/jettylib/jetty-i2p.jar" />
33            </classpath>
34        </depend>
35    </target>
36
37    <target name="compile" depends="depend" >
38        <mkdir dir="./src/WEB-INF/classes" />
39        <javac 
40            srcdir="./src/src"
41            debug="true" deprecation="on" source="${javac.version}" target="${javac.version}" 
42            includeAntRuntime="false"
43            destdir="./src/WEB-INF/classes">
44            <compilerarg line="${javac.compilerargs}" />
45            <classpath>
46                <pathelement location="../../core/java/build/i2p.jar" />
47                <pathelement location="../jetty/jettylib/javax.servlet.jar" />
48                <!-- jsp-api.jar only present for debian builds -->
49                <pathelement location="../jetty/jettylib/jsp-api.jar" />
50                <!-- tomcat-api.jar only present for debian builds -->
51                <pathelement location="../jetty/jettylib/tomcat-api.jar" />
52                <pathelement location="../jetty/jettylib/jetty-i2p.jar" />
53            </classpath>
54        </javac>
55    </target>
56
57    <!-- jar (not war) for testing only -->
58    <target name="jar" depends="compile, bundle, warUpToDate, listChangedFiles" >
59        <!-- set if unset -->
60        <property name="workspace.changes.tr" value="" />
61        <copy file="src/susimail.properties" todir="src/WEB-INF/classes" />
62        <jar destfile="susimail.jar"
63             basedir="src/WEB-INF/classes">
64            <manifest>
65                <attribute name="Implementation-Version" value="${full.version}" />
66                <attribute name="Built-By" value="${build.built-by}" />
67                <attribute name="Build-Date" value="${build.timestamp}" />
68                <attribute name="Base-Revision" value="${workspace.version}" />
69                <attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
70                <attribute name="X-Compile-Source-JDK" value="${javac.version}" />
71                <attribute name="X-Compile-Target-JDK" value="${javac.version}" />
72            </manifest>
73        </jar>
74    </target>
75
76    <target name="listChangedFiles" depends="warUpToDate" if="shouldListChanges" >
77        <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
78            <arg value="list" />
79            <arg value="changed" />
80            <arg value="." />
81        </exec>
82        <!-- \n in an attribute value generates an invalid manifest -->
83        <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
84            <arg value="-s" />
85            <arg value="[:space:]" />
86            <arg value="," />
87        </exec>
88    </target>
89
90    <target name="war" depends="compile, bundle, warUpToDate, listChangedFiles" unless="war.uptodate" >
91        <!-- set if unset -->
92        <property name="workspace.changes.tr" value="" />
93        <copy file="src/susimail.properties" todir="src/WEB-INF/classes" />
94        <war destfile="susimail.war" webxml="src/WEB-INF/web.xml"
95             basedir="src/" excludes="WEB-INF/web.xml LICENSE src src/**/* susimail.properties">
96            <manifest>
97                <attribute name="Implementation-Version" value="${full.version}" />
98                <attribute name="Built-By" value="${build.built-by}" />
99                <attribute name="Build-Date" value="${build.timestamp}" />
100                <attribute name="Base-Revision" value="${workspace.version}" />
101                <attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
102                <attribute name="X-Compile-Source-JDK" value="${javac.version}" />
103                <attribute name="X-Compile-Target-JDK" value="${javac.version}" />
104            </manifest>
105        </war>
106    </target>
107
108    <target name="warUpToDate">
109        <uptodate property="war.uptodate" targetfile="susimail.war">
110            <srcfiles dir= "src" excludes="LICENSE src/**/*" />
111        </uptodate>
112        <condition property="shouldListChanges" >
113            <and>
114                <not>
115                    <isset property="war.uptodate" />
116                </not>
117                <isset property="mtn.available" />
118            </and>
119        </condition>
120    </target>
121
122    <target name="bundle" depends="compile" unless="no.bundle">
123        <mkdir dir="build/messages-src" />
124        <!-- Update the messages_*.po files.
125             We need to supply the bat file for windows, and then change the fail property to true -->
126        <exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="${require.gettext}" >
127            <env key="JAVA_HOME" value="${java.home}" />
128            <arg value="./bundle-messages.sh" />
129        </exec>
130        <exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="${require.gettext}" >
131            <arg value="./bundle-messages.sh" />
132        </exec>
133        <!-- multi-lang is optional -->
134        <exec executable="sh" osfamily="windows" failifexecutionfails="false" >
135            <arg value="./bundle-messages.sh" />
136        </exec>
137        <javac source="${javac.version}" target="${javac.version}" 
138               includeAntRuntime="false"
139               srcdir="build/messages-src" destdir="src/WEB-INF/classes">
140            <compilerarg line="${javac.compilerargs}" />
141        </javac>
142    </target>
143
144    <target name="poupdate" depends="builddep, compile">
145        <!-- Update the messages_*.po files.  -->
146        <!-- set if unset -->
147        <property name="lg2" value="" />
148        <exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="true" >
149            <env key="LG2" value="${lg2}" />
150            <arg value="./bundle-messages.sh" />
151            <arg value="-p" />
152        </exec>
153        <exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="true" >
154            <env key="LG2" value="${lg2}" />
155            <arg value="./bundle-messages.sh" />
156            <arg value="-p" />
157        </exec>
158        <exec executable="sh" osfamily="windows" failifexecutionfails="true" failonerror="true" >
159            <env key="LG2" value="${lg2}" />
160            <arg value="./bundle-messages.sh" />
161            <arg value="-p" />
162        </exec>
163    </target>
164
165    <target name="javadoc">
166        <mkdir dir="./build" />
167        <mkdir dir="./build/javadoc" />
168        <javadoc 
169            sourcepath="./src/src/" destdir="./build/javadoc" 
170            packagenames="*" 
171            use="true" 
172            splitindex="true" 
173            windowtitle="susimail" />
174    </target>
175    <target name="clean">
176        <delete dir="src/WEB-INF/classes"/>
177        <delete file="susimail.war"/>
178        <delete file="susimail.jar"/>
179        <delete dir="build"/>
180    </target>
181    <target name="cleandep" depends="clean" />
182    <target name="distclean" depends="clean" />
183</project>
Note: See TracBrowser for help on using the repository browser.