|
1 | 1 | <?xml version="1.0"?> |
2 | 2 | <project name="SampleJavaProject" default="jar"> |
3 | | - <property name="jar.file" value="SJP.jar"/> |
| 3 | + <!-- Project-specific configuration --> |
| 4 | + <property name="package" value="sample.java.project"/> |
| 5 | + <property name="main.class" value="${package}.${ant.project.name}"/> |
| 6 | + <property name="jar.file" value="${ant.project.name}.jar"/> |
| 7 | + |
| 8 | + <!-- Standard Directory Layout --> |
4 | 9 | <property name="src.dir" value="src"/> |
5 | | - <property name="build.dir" value="build"/> |
6 | 10 | <property name="test.dir" value="test"/> |
7 | | - <property name="doc.dir" value="doc"/> |
| 11 | + <property name="build.dir" value="build"/> |
8 | 12 | <property name="build.classes.dir" value="${build.dir}/classes"/> |
9 | 13 | <property name="test.classes.dir" value="${build.dir}/test"/> |
| 14 | + <property name="dist.dir" value="dist"/> |
| 15 | + <property name="lib.dir" value="lib"/> |
| 16 | + <property name="doc.dir" value="doc"/> |
| 17 | + |
| 18 | + <!-- Project classpath --> |
| 19 | + <path id="build.classpath"> |
| 20 | + <fileset dir="${lib.dir}"> |
| 21 | + <include name="*.jar"/> |
| 22 | + </fileset> |
| 23 | + </path> |
| 24 | + |
| 25 | + <!-- Additional build tools --> |
10 | 26 | <taskdef resource="checkstyletask.properties"/> |
11 | 27 | <taskdef resource="proguard/ant/task.properties"/> |
12 | 28 |
|
| 29 | + <!-- Targets --> |
| 30 | + |
13 | 31 | <target name="init"> |
14 | 32 | <mkdir dir="${build.classes.dir}"/> |
| 33 | + <mkdir dir="${dist.dir}"/> |
15 | 34 | </target> |
16 | 35 |
|
17 | 36 | <target name="compile" depends="init" |
|
20 | 39 | optimize="on" debug="on" deprecation="on" |
21 | 40 | includeantruntime="false"> |
22 | 41 | <compilerarg value="-Xlint"/> |
| 42 | + <classpath refid="build.classpath"/> |
23 | 43 | </javac> |
24 | 44 | <copy todir="${build.classes.dir}"> |
25 | 45 | <fileset dir="${src.dir}" excludes="**/*.java"/> |
|
28 | 48 |
|
29 | 49 | <target name="jar" depends="compile" |
30 | 50 | description="Generate the jarfile distributable."> |
31 | | - <jar destfile="${jar.file}" basedir="${build.classes.dir}"> |
| 51 | + <jar destfile="${dist.dir}/${jar.file}" basedir="${build.classes.dir}"> |
| 52 | + <zipgroupfileset dir="${lib.dir}" includes="*.jar"/> |
32 | 53 | <manifest> |
33 | | - <attribute name="Main-Class" |
34 | | - value="sample.java.project.SampleJavaProject"/> |
| 54 | + <attribute name="Main-Class" value="${main.class}"/> |
35 | 55 | </manifest> |
36 | 56 | </jar> |
37 | 57 | </target> |
38 | 58 |
|
39 | 59 | <target name="run" depends="jar" description="Run the application."> |
40 | | - <java jar="${jar.file}" fork="true"/> |
| 60 | + <java jar="${dist.dir}/${jar.file}" fork="true"/> |
41 | 61 | </target> |
42 | 62 |
|
43 | 63 | <target name="clean" description="Delete all generated files."> |
44 | 64 | <delete dir="${build.dir}"/> |
45 | | - <delete file="${jar.file}"/> |
| 65 | + <delete dir="${dist.dir}"/> |
46 | 66 | </target> |
47 | 67 |
|
48 | 68 | <target name="javadoc" description="Generate Javadoc HTML."> |
|
69 | 89 | <target name="optimize" depends="jar"> |
70 | 90 | <proguard> |
71 | 91 | <libraryjar path="${java.home}/lib/rt.jar"/> |
72 | | - <injar file="${jar.file}"/> |
73 | | - <outjar file="out.${jar.file}"/> |
| 92 | + <injar file="${dist.dir}/${jar.file}"/> |
| 93 | + <outjar file="${dist.dir}/out.${jar.file}"/> |
74 | 94 | <keepclasseswithmembers access="public" type="class"> |
75 | 95 | <method access="public" type="void" name="main" |
76 | 96 | parameters="java.lang.String[]"/> |
77 | 97 | </keepclasseswithmembers> |
78 | 98 | </proguard> |
79 | | - <delete file="${jar.file}"/> |
80 | | - <move file="out.${jar.file}" tofile="${jar.file}"/> |
| 99 | + <delete file="${dist.dir}/${jar.file}"/> |
| 100 | + <move file="${dist.dir}/out.${jar.file}" tofile="${dist.dir}/${jar.file}"/> |
81 | 101 | </target> |
82 | 102 |
|
83 | 103 | <!-- JUnit --> |
|
0 commit comments