forked from opendcs/opendcs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild-macros.xml
123 lines (121 loc) · 5.75 KB
/
build-macros.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<project name="macros" xmlns:ivy="antlib:org.apache.ivy.ant"
xmlns:if="ant:if" xmlns:unless="ant:unless"
xmlns:jacoco="antlib:org.jacoco.ant">
<macrodef name="compile-java">
<attribute name="outputDir"/>
<attribute name="srcDir"/>
<attribute name="outputName"/>
<attribute name="javaSrcTarget" default="1.8"/>
<attribute name="javaCompileTarget" default="1.8"/>
<element name="classpaths"/>
<element name="fileset-for-update-to-date" optional="true"/>
<sequential>
<uptodate property="@{outputName}.compile.current" targetfile="${status.dir}/src.@{outputName}.build.date">
<srcresources>
<!-- Always rebuild if baseline project files have changed -->
<fileset dir="${project.dir}" includes="ivy.xml,ivy-settings.xml,build.xml,build-macros.xml,common.xml"/>
<fileset dir="@{srcDir}" includes="**/*"/>
<fileset-for-update-to-date/>
</srcresources>
</uptodate>
<!-- create build date -->
<mkdir dir="@{outputDir}/classes"/>
<mkdir dir="@{outputDir}/resources"/>
<tstamp>
<format property="buildDate" pattern="MMM dd, yyyy"/>
</tstamp>
<if>
<not>
<isset property="@{outputName}.compile.current}"/>
</not>
<then>
<sync todir="@{outputDir}/resources">
<fileset dir="@{srcDir}/resources"/>
</sync>
<javac debug="true" destdir="@{outputDir}/classes"
target="@{javaCompileTarget}" source="@{javaSrcTarget}"
includeantruntime="true"
encoding="UTF-8" includes="**">
<src path="@{srcDir}/java"/>
<compilerarg value="-parameters"/>
<classpath>
<classpaths/>
</classpath>
</javac>
<touch file="${status.dir}/src.@{outputName}.build.date"/>
</then>
</if>
<property name="@{outputName}.classes" value="@{outputDir}/classes"/>
<property name="@{outputName}.resources" value="@{outputDir}/resources"/>
</sequential>
</macrodef>
<macrodef name="test">
<attribute name="classesDir"/>
<attribute name="outputName"/>
<element name="classpaths"/>
<element name="testfiles" optional="true"/>
<element name="jvmargs" optional="true"/>
<element name="fileset-for-update-to-date" optional="true"/>
<sequential>
<mkdir dir="${junit.html.output.dir}"/>
<mkdir dir="${build.dir}/test/@{outputName}/results"/>
<mkdir dir="${build.dir}/test/@{outputName}/tmp"/>
<uptodate property="@{outputName}.test.current" targetFile="${status.dir}/test.@{outputName}.run.date">
<srcresources>
<!-- Always rebuild if baseline project files have changed -->
<fileset dir="${project.dir}" includes="ivy.xml,ivy-settings.xml,build.xml,build-macros.xml,common.xml"/>
<fileset dir="@{classesDir}" includes="**/*"/>
<fileset-for-update-to-date/>
</srcresources>
</uptodate>
<if>
<or>
<not>
<isset property="@{outputName}.test.current"/>
</not>
<isset property="user_set_tests"/>
</or>
<then>
<jacoco:agent property="coverage.agent.param.@{outputName}" destfile="${coverage.dir}/jacoco.@{outputName}.exec"/>
<junitlauncher haltOnFailure="false" printSummary="true" failureProperty="@{outputName}.failed">
<classpaths/>
<testclasses outputdir="${build.dir}/test/@{outputName}/results">
<fork>
<jvmarg value="${coverage.agent.param.@{outputName}}"/>
<jvmarg value="-Dbuild.dir=${build.dir}"/>
<jvmarg value="-Djava.io.tmpdir=${build.dir}/test/@{outputName}/tmp"/>
<jvmarg if:set="debugPort" value="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=${debugPort}"/>
<jvmargs/>
</fork>
<fileset dir="@{classesDir}">
<include name="**/${tests}*"/>
<testfiles/>
</fileset>
<listener type="legacy-brief" sendSysOut="true" useLegacyReportingName="false"/>
<listener type="legacy-xml" sendSysErr="true" sendSysOut="true" useLegacyReportingName="false"/>
</testclasses>
</junitlauncher>
<mkdir dir="${junit.html.output.dir}/@{outputName}"/>
<junitreport todir="${junit.html.output.dir}/">
<fileset dir="${build.dir}/test/@{outputName}/results">
<include name="TEST-*.xml"/>
<exclude name="TEST-fixture*"/>
<exclude name="TEST-*$?.xml"/>
</fileset>
<report format="noframes" todir="${junit.html.output.dir}/@{outputName}"/>
</junitreport>
<if>
<isset property="@{outputName}.failed"/>
<then>
<delete file="${status.dir}/test.@{outputName}.run.date" quiet="true"/>
<fail message="Tests have failures."/>
</then>
<else>
<touch file="${status.dir}/test.@{outputName}.run.date"/>
</else>
</if>
</then>
</if>
</sequential>
</macrodef>
</project>