source: apps/addressbook/build.xml @ ec6c244

Last change on this file since ec6c244 was b0bba18, checked in by zzz <zzz@…>, 4 years ago

Build: Add manifest attributes for java version to all jars and wars

  • Property mode set to 100644
File size: 5.8 KB
Line 
1<?xml version="1.0"?>
2<project name="addressbook" default="war" basedir=".">
3
4        <property name="src" value="java/src"/>
5        <property name="build" value="build"/>
6        <property name="dist"  location="dist"/>
7        <property name="jar" value="addressbook.jar"/>
8        <property name="war" value="addressbook.war"/>
9        <property name="javac.compilerargs" value="" />
10        <property name="javac.version" value="1.7" />
11       
12        <target name="init">
13                <mkdir dir="${build}"/>
14                <mkdir dir="${dist}"/>
15        </target>
16
17        <target name="clean">
18                <delete dir="${build}"/>
19                <delete dir="${dist}"/>
20        </target>
21
22        <target name="distclean" depends="clean" />
23
24        <condition property="depend.available">
25            <typefound name="depend" />
26        </condition>
27        <target name="depend" if="depend.available">
28            <depend
29                cache="../../build"
30                srcdir="${src}"
31                destdir="${build}" >
32                <!-- Depend on classes instead of jars where available -->
33                <classpath>
34                    <pathelement location="../../core/java/build/obj" />
35                </classpath>
36            </depend>
37        </target>
38
39        <target name="dependServlet" if="depend.available">
40            <depend
41                cache="../../build"
42                srcdir="${src}"
43                destdir="${build}" >
44                <!-- Depend on classes instead of jars where available -->
45                <classpath>
46                    <pathelement location="../../core/java/build/obj" />
47                    <pathelement location="../jetty/jettylib/javax.servlet.jar" />
48                </classpath>
49            </depend>
50        </target>
51
52        <target name="compile" depends="init, depend">
53            <javac debug="true" deprecation="on" source="${javac.version}" target="${javac.version}" 
54                       includeAntRuntime="false"
55                       srcdir="${src}" destdir="${build}"
56                       excludes="net/i2p/addressbook/Servlet.java">
57            <compilerarg line="${javac.compilerargs}" />
58            <classpath>
59                <pathelement location="../../core/java/build/i2p.jar" />
60            </classpath>
61                </javac>
62        </target>
63
64        <target name="compileServlet" depends="init, dependServlet, compile">
65            <javac debug="true" deprecation="on" source="${javac.version}" target="${javac.version}" 
66                       includeAntRuntime="false"
67                       srcdir="${src}" destdir="${build}"
68                       includes="net/i2p/addressbook/Servlet.java">
69            <compilerarg line="${javac.compilerargs}" />
70            <classpath>
71                <pathelement location="../../core/java/build/i2p.jar" />
72                <pathelement location="../jetty/jettylib/javax.servlet.jar" />
73            </classpath>
74                </javac>
75        </target>
76
77        <!-- unused for now (except for Android), as we oddly ship addressbook as a .war -->
78        <target name="jar" depends="compile, changes">
79                <!-- set if unset -->
80                <property name="workspace.changes.tr" value="" />
81                <jar basedir="${build}" destfile="${dist}/${jar}">
82                        <manifest>
83                                <attribute name="Main-Class" value="net.i2p.addressbook.Daemon"/>
84                                <attribute name="Implementation-Version" value="${full.version}" />
85                                <attribute name="Built-By" value="${build.built-by}" />
86                                <attribute name="Build-Date" value="${build.timestamp}" />
87                                <attribute name="Base-Revision" value="${workspace.version}" />
88                                <attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
89                                <attribute name="X-Compile-Source-JDK" value="${javac.version}" />
90                                <attribute name="X-Compile-Target-JDK" value="${javac.version}" />
91                        </manifest>
92                </jar>
93        </target>
94       
95        <target name="war" depends="compileServlet, changes, warUpToDate" unless="war.uptodate">
96                <mkdir dir="${dist}/tmp"/>
97                <mkdir dir="${dist}/tmp/WEB-INF"/>
98                <mkdir dir="${dist}/tmp/WEB-INF/classes"/>
99                <copy todir="${dist}/tmp/WEB-INF/classes">
100                        <fileset dir="${build}"/>
101                </copy>
102                <!-- set if unset -->
103                <property name="workspace.changes.tr" value="" />
104                <war basedir="${dist}/tmp" webxml="web.xml" destfile="${dist}/${war}">
105                        <manifest>
106                                <attribute name="Implementation-Version" value="${full.version}" />
107                                <attribute name="Built-By" value="${build.built-by}" />
108                                <attribute name="Build-Date" value="${build.timestamp}" />
109                                <attribute name="Base-Revision" value="${workspace.version}" />
110                                <attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
111                                <attribute name="X-Compile-Source-JDK" value="${javac.version}" />
112                                <attribute name="X-Compile-Target-JDK" value="${javac.version}" />
113                        </manifest>
114                </war>
115                <delete dir="${dist}/tmp"/>
116        </target>
117       
118        <target name="warUpToDate">
119                <uptodate property="war.uptodate" targetfile="${dist}/${war}">
120                            <srcfiles dir= "." includes="${build}/**/*.class, web.xml"/>
121                </uptodate>
122                <condition property="shouldListChanges" >
123                    <and>
124                        <not>
125                            <isset property="war.uptodate" />
126                        </not>
127                        <isset property="mtn.available" />
128                    </and>
129                </condition>
130        </target>
131
132        <target name="changes" depends="warUpToDate" if="shouldListChanges" >
133                <exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
134                    <arg value="list" />
135                    <arg value="changed" />
136                    <arg value="." />
137                </exec>
138                <!-- \n in an attribute value generates an invalid manifest -->
139                <exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
140                        <arg value="-s" />
141                        <arg value="[:space:]" />
142                        <arg value="," />
143                </exec>
144        </target>
145</project>
Note: See TracBrowser for help on using the repository browser.