summaryrefslogtreecommitdiffstats
path: root/common.xml
blob: d61a98bc3cc9c84d5d192f91a48523ab9721aedb (plain)
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<?xml version="1.0" encoding="UTF-8"?>
<project name="common" basedir="." default="" xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:antcontrib="antlib:net.sf.antcontrib" xmlns:cs="antlib:com.puppycrawl.tools.checkstyle">

    <tstamp>
        <format property="build.date" pattern="yyyy-MM-dd" />
    </tstamp>

    <dirname property="vaadin.basedir" file="${ant.file.common}" />
    <property file="${vaadin.basedir}/build.properties" />

    <ivy:settings file="${vaadin.basedir}/ivysettings.xml" />
    <ivy:settings file="${vaadin.basedir}/ivysettings.xml" id="ivysettings" />
    <ivy:resolve log="download-only" file="${vaadin.basedir}/ivy-taskdefs.xml" conf="taskdefs" />
    <ivy:cachepath pathid="taskdefs.classpath" conf="taskdefs" />
    <taskdef uri="antlib:net.sf.antcontrib" resource="net/sf/antcontrib/antlib.xml" classpathref="taskdefs.classpath" />
    <!-- ant contrib for Maven integration -->
    <taskdef resource="org/apache/maven/artifact/ant/antlib.xml" uri="antlib:org.apache.maven.artifact.ant" classpathref="taskdefs.classpath" />

    <!-- FIXME These are not available in other files -->
    <filterset begintoken="@" endtoken="@" id="filter-vaadin.version">
        <filter token="version" value="${vaadin.version}" />
    </filterset>

    <union id="empty.reference" />


    <target name="compile" description="Compiles the module" depends="dependencies, directories" if="src-exists">
        <fail unless="module.name" message="No module name given" />

        <javac srcdir="${src}" destdir="${classes}" source="${vaadin.java.version}" target="${vaadin.java.version}" debug="true" encoding="UTF-8" includeantruntime="false">
            <classpath refid="classpath.compile.dependencies" />
            <classpath refid="classpath.compile.custom" />
        </javac>
        <copy todir="${classes}">
            <fileset dir="${src}" includes="${extra.classes}" />
        </copy>
    </target>

    <target name="directories">
        <property name="result.dir" location="result" />
        <property name="src" location="${result.dir}/../src" />
        <property name="classes" location="${result.dir}/classes" />
        <available file="${src}" type="dir" property="src-exists" />
        <mkdir dir="${classes}" />
    </target>

    <target name="test.run" depends="test.compile">
        <fail unless="module.name" message="No module name given" />

        <property name="result.dir" location="result" />
        <property name="classes" location="${result.dir}/classes" />
        <property name="test.src" location="${result.dir}/../tests/src" />
        <property name="test.classes" location="${result.dir}/tests/classes" />

        <!-- Ensure report dir is empty before running tests -->
        <property name="report.dir" location="${result.dir}/reports" />
        <delete dir="${report.dir}" />
        <mkdir dir="${report.dir}" />

        <junit showoutput="no" printsummary="no" fork="yes">
            <formatter type="xml" />
            <jvmarg value="-ea" />
            <classpath location="${test.classes}" />
            <classpath location="${classes}" />
            <classpath refid="classpath.compile.custom" />
            <classpath refid="classpath.test.dependencies" />

            <batchtest fork="yes" todir="${report.dir}">
                <fileset dir="${test.src}">
                    <include name="**/*Test.java" />
                    <include name="**/*Tests.java" />
                </fileset>
            </batchtest>
        </junit>
    </target>

    <target name="test.compile" description="Compiles tests" depends="compile, dependencies.test">
        <fail unless="module.name" message="No module name given" />
        <property name="result.dir" location="result" />
        <property name="base.dir" location="${result.dir}/.." />
        <property name="test.src" location="${base.dir}/tests/src" />
        <property name="test.resources" location="${base.dir}/tests/resources" />
        <property name="test.classes" location="${result.dir}/tests/classes" />
        <property name="classes" location="${result.dir}/classes" />

        <mkdir dir="${test.classes}" />

        <javac srcdir="${test.src}" destdir="${test.classes}" source="${vaadin.java.version}" target="${vaadin.java.version}" debug="true" encoding="UTF-8" includeantruntime="false">
            <classpath refid="classpath.test.dependencies" />
            <classpath location="${classes}" />
            <classpath refid="classpath.test.custom" />
        </javac>

        <!-- Copy resources -->
        <copy todir="${test.classes}" failonerror="false">
            <fileset dir="${test.resources}" />
            <!-- include html templates used in declarative tests -->
            <fileset dir="${test.src}">
                <include name="**/*.html" />
            </fileset>
        </copy>
    </target>

    <target name="dependencies" description="Resolves dependencies needed by this module">
        <property name='conf' value="build, build-provided" />
        <ivy:resolve log="download-only" resolveid="common" conf="${conf}" />
        <ivy:cachepath pathid="classpath.compile.dependencies" conf="${conf}" />
    </target>

    <target name="dependencies.test" description="Resolves dependencies needed by test">
        <ivy:resolve log="download-only" resolveid="common" conf="test" />
        <ivy:cachepath pathid="classpath.test.dependencies" conf="test" />
    </target>

    <target name="remove-test-reports">
        <fail unless="result.dir" message="No result.dir parameter given" />
        <delete dir="${result.dir}/reports" />
    </target>

    <target name="clean" depends="remove-test-reports">
        <fail unless="result.dir" message="No result.dir parameter given" />
        <delete dir="${result.dir}" />
    </target>

    <!-- Checkstyle conf -->
    <property name="cs.dir" location="${vaadin.basedir}/checkstyle" />
    <property name="cs.xml" location="${cs.dir}/vaadin-checkstyle.xml" />
    <property name="cs.header-file" location="${cs.dir}/header" />
    <property name="cs.import-control-file" location="${cs.dir}/import-control.xml" />
    <taskdef resource="checkstyletask.properties" uri="antlib:com.puppycrawl.tools.checkstyle" classpathref="taskdefs.classpath" />

    <target name="checkstyle">
        <fail unless="result.dir" message="No result.dir parameter given" />
        <fail unless="cs.src" message="No cs.src parameter given" />
        <property name="result.dir.full" location="${result.dir}" />
        <mkdir dir="${result.dir}" />
        <echo>##teamcity[importData type='checkstyle' path='${result.dir.full}/checkstyle-errors.xml']</echo>
        <cs:checkstyle config="${cs.xml}" failOnViolation="false">
            <fileset dir="${cs.src}" includes="**/*.java">
                <exclude name="com/vaadin/sass/internal/parser/Parser.java" />
                <exclude name="com/vaadin/sass/internal/parser/ParserConstants.java" />
                <exclude name="com/vaadin/sass/internal/parser/ParserTokenManager.java" />
            </fileset>
            <formatter type="xml" toFile="${result.dir}/checkstyle-errors.xml" />
            <property key="checkstyle.header.file" file="${cs.header-file}" />
            <property key="checkstyle.importControl.file" file="${cs.import-control-file}" />
        </cs:checkstyle>
    </target>
</project>