| <project name="quarks" default="all" |
| xmlns:jacoco="antlib:org.jacoco.ant" |
| > |
| <description> |
| Top-level build.xml for Quarks. |
| </description> |
| |
| <property name="release.base" location="release-${ant.project.name}"/> |
| |
| <property name="quarks.version" value="0.4.0"/> |
| |
| <property name="report.dir" location="reports"/> |
| <property name="target.dir" location="target"/> |
| <property name="javadoc.dir" location="${target.dir}/docs/javadoc"/> |
| <property name="release.dir" location="${release.base}"/> |
| |
| <target name="all" depends="init,suball,copy,docs" |
| description="Build the code and Javadoc into target. Requires Java 8" |
| /> |
| |
| <target name="init" depends="setcommitversion"> |
| <mkdir dir="${target.dir}"/> |
| </target> |
| |
| <target name="setcommitversion"> |
| <!-- Create the time stamp --> |
| <tstamp/> |
| |
| <!-- Extract the git commit hash --> |
| <exec executable="git" outputproperty="commithash"> |
| <arg value="rev-parse"/> |
| <arg value="--short"/> |
| <arg value="HEAD"/> |
| </exec> |
| <mkdir dir="${target.dir}"/> |
| <echoproperties destfile="${target.dir}/version.txt"> |
| <propertyset> |
| <propertyref name="quarks.version"/> |
| <propertyref name="DSTAMP"/> |
| <propertyref name="TSTAMP"/> |
| <propertyref name="commithash"/> |
| </propertyset> |
| </echoproperties> |
| </target> |
| |
| <target name="copy"> |
| <!-- copy README.md --> |
| <copy todir="${target.dir}" file="README.md"/> |
| <copy todir="${target.dir}" file="LICENSE"/> |
| |
| <!-- copy scripts --> |
| <mkdir dir="${target.dir}/java8/scripts"/> |
| <copy todir="${target.dir}/java8/scripts" includeEmptyDirs="no"> |
| <fileset dir="scripts"/> |
| </copy> |
| |
| <!-- copy sample code --> |
| <mkdir dir="${target.dir}/java8/samples/src"/> |
| <copy todir="${target.dir}/java8/samples/src" includeEmptyDirs="no"> |
| <fileset dir="samples" includes="**/*.java" excludes="**/build.xml **/test/**"/> |
| </copy> |
| |
| </target> |
| |
| <target name="suball"> |
| <subprojects target="all"/> |
| </target> |
| <target name="test" |
| description="Run all JUnit tests. Requires Java 8" |
| > |
| <echo message="HINT: to include tests for some connectors do: ant -Dtest.base.pattern='**/*TestManual.java' test"/> |
| <subprojects target="test"/> |
| </target> |
| <target name="clean"> |
| <subprojects target="clean"/> |
| <delete dir="${report.dir}"/> |
| <delete dir="${javadoc.dir}"/> |
| <delete dir="${release.dir}"/> |
| <delete dir="${target.dir}"/> |
| </target> |
| |
| <macrodef name="subprojects"> |
| <attribute name="target"/> |
| <sequential> |
| <ant dir="api/function" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="api/execution" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="api/window" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="api/oplet" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="api/graph" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="api/topology" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="spi/graph" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="spi/topology" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="runtime/etiao" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="runtime/jmxcontrol" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="runtime/jsoncontrol" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="utils/metrics" target="@{target}" useNativeBasedir="true"/> |
| |
| <ant dir="providers/direct" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/common" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/iot" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/serial" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/file" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/http" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/iotf" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/jdbc" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/kafka" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/mqtt" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/quarks.javax.websocket" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/javax.websocket-client" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/javax.websocket-server" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/wsclient" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="connectors/wsclient-javax.websocket" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="console/server" target="@{target}" useNativeBasedir="true" /> |
| <ant dir="console/servlets" target="@{target}" useNativeBasedir="true" /> |
| <ant dir="providers/development" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="analytics/math3" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="analytics/sensors" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="samples/utils" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="samples/apps" target="@{target}" useNativeBasedir="true" /> |
| <ant dir="samples/topology" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="samples/connectors" target="@{target}" useNativeBasedir="true"/> |
| <ant dir="samples/console" target="@{target}" useNativeBasedir="true" /> |
| <ant dir="android/topology" target="@{target}" useNativeBasedir="true" /> |
| <ant dir="android/hardware" target="@{target}" useNativeBasedir="true" /> |
| <ant dir="test/svt" target="@{target}" useNativeBasedir="true" /> |
| </sequential> |
| </macrodef> |
| |
| <target name="junit.report"> |
| <mkdir dir="${report.dir}/junit"/> |
| <junitreport todir="${report.dir}"> |
| <fileset dir="${basedir}"> |
| <include name="**/unittests/*/TEST-*.xml"/> |
| </fileset> |
| <report format="frames" todir="${report.dir}/junit"/> |
| </junitreport> |
| </target> |
| |
| <target name="coverage.report" > |
| <mkdir dir="${report.dir}/coverage"/> |
| <jacoco:report> |
| <executiondata> |
| <fileset dir="${basedir}"> |
| <include name="**/unittests/*/jacoco*.exec"/> |
| </fileset> |
| </executiondata> |
| <structure name="Quarks"> |
| |
| <group name="Quarks API"> |
| <classfiles> |
| <fileset dir="${target.dir}/java8/lib"> |
| <include name="quarks.api.*.jar"/> |
| </fileset> |
| </classfiles> |
| <sourcefiles encoding="UTF-8"> |
| <fileset dir="${basedir}/api/function/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/api/execution/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/api/oplet/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/api/graph/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/api/topology/src/main/java" includes="**/*.java"/> |
| </sourcefiles> |
| </group> |
| <group name="Quarks SPI"> |
| <classfiles> |
| <fileset dir="${target.dir}/java8/lib"> |
| <include name="quarks.spi.*.jar"/> |
| </fileset> |
| </classfiles> |
| <sourcefiles encoding="UTF-8"> |
| <fileset dir="${basedir}/spi/graph/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/spi/topology/src/main/java" includes="**/*.java"/> |
| </sourcefiles> |
| </group> |
| <group name="Quarks Runtime"> |
| <classfiles> |
| <fileset dir="${target.dir}/java8/lib"> |
| <include name="quarks.runtime.*.jar"/> |
| </fileset> |
| </classfiles> |
| <sourcefiles encoding="UTF-8"> |
| <fileset dir="${basedir}/runtime/etiao/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/runtime/jmxcontrol/src/main/java" includes="**/*.java"/> |
| </sourcefiles> |
| </group> |
| |
| <group name="Quarks Utilities"> |
| <classfiles> |
| <fileset dir="${target.dir}/java8/utils"> |
| <include name="**/quarks.utils.*.jar"/> |
| </fileset> |
| </classfiles> |
| <sourcefiles encoding="UTF-8"> |
| <fileset dir="${basedir}/utils/metrics/src/main/java" includes="**/*.java"/> |
| </sourcefiles> |
| </group> |
| <group name="Quarks Connectors"> |
| <classfiles> |
| <fileset dir="${target.dir}/java8/connectors"> |
| <include name="**/quarks.connectors.*.jar"/> |
| </fileset> |
| </classfiles> |
| <sourcefiles encoding="UTF-8"> |
| <fileset dir="${basedir}/connectors/common/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/connectors/file/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/connectors/iot/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/connectors/iotf/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/connectors/jdbc/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/connectors/kafka/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/connectors/mqtt/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/connectors/http/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/connectors/wsclient/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/connectors/wsclient-javax.websocket/src/main/java" includes="**/*.java"/> |
| </sourcefiles> |
| </group> |
| |
| <group name="Quarks Providers"> |
| <classfiles> |
| <fileset dir="${target.dir}/java8/lib"> |
| <include name="quarks.providers.*.jar"/> |
| </fileset> |
| </classfiles> |
| <sourcefiles encoding="UTF-8"> |
| <fileset dir="${basedir}/providers/direct/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/providers/development/src/main/java" includes="**/*.java"/> |
| </sourcefiles> |
| </group> |
| |
| <group name="Quarks Analytics"> |
| <classfiles> |
| <fileset dir="${target.dir}/java8/analytics"> |
| <include name="**/quarks.analytics.*.jar"/> |
| </fileset> |
| </classfiles> |
| <sourcefiles encoding="UTF-8"> |
| <fileset dir="${basedir}/analytics/math3/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/analytics/sensors/src/main/java" includes="**/*.java"/> |
| </sourcefiles> |
| </group> |
| |
| <group name="Quarks Console"> |
| <classfiles> |
| <fileset dir="${target.dir}/java8/console"> |
| <include name="**/quarks.console.*.jar"/> |
| </fileset> |
| </classfiles> |
| <sourcefiles encoding="UTF-8"> |
| <fileset dir="${basedir}/console/server/src/main/java" includes="**/*.java"/> |
| <fileset dir="${basedir}/console/servlets/src/main/java" includes="**/*.java"/> |
| </sourcefiles> |
| </group> |
| |
| </structure> |
| <html destdir="${report.dir}/coverage"/> |
| </jacoco:report> |
| </target> |
| |
| <target name="reports" depends="junit.report,coverage.report" |
| description="Produce test and coverage reports under reports after executing the test target" |
| /> |
| |
| <target name="docs"> |
| <mkdir dir="${javadoc.dir}"/> |
| <javadoc |
| destdir="${javadoc.dir}" |
| author="true" |
| version="true" |
| use="true" |
| windowtitle="Quarks v${quarks.version}" |
| additionalparam="-Xdoclint:none" |
| Overview="quarks_overview.html" |
| failonwarning="true" |
| excludepackagenames="quarks.connectors.runtime,quarks.connectors.*.runtime,quarks.console.*,quarks.topology.spi.*,quarks.graph.spi.*" |
| > |
| <sourcepath> |
| <dirset dir="${basedir}"> |
| <include name="*/*/src/main/java"/> |
| <exclude name="android/**"/> |
| </dirset> |
| </sourcepath> |
| <classpath> |
| <fileset dir="ext"> |
| <include name="**/*.jar"/> |
| </fileset> |
| <fileset dir="."> |
| <include name="console/*/ext/*/*.jar"/> |
| <include name="connectors/*/ext/*.jar"/> |
| <include name="analytics/*/ext/*/*.jar"/> |
| <include name="utils/metrics/ext/*/*.jar"/> |
| </fileset> |
| </classpath> |
| |
| <doctitle>Quarks v${quarks.version}</doctitle> |
| <footer><![CDATA[<a href="http://quarks-edge.github.io">quarks-edge community @ github.com</a>]]></footer> |
| <bottom>Copyright IBM 2015,2016 - ${commithash}-${DSTAMP}-${TSTAMP}</bottom> |
| <group title="Quarks API" packages="quarks.execution,quarks.function,quarks.topology,quarks.topology.*,quarks.execution.*"/> |
| <group title="Quarks Providers" packages="quarks.providers.*"/> |
| <group title="Quarks Connectors" packages="quarks.connectors.*"/> |
| <group title="Quarks Samples" packages="quarks.samples.*"/> |
| <group title="Quarks Analytics" packages="quarks.analytics.*"/> |
| <group title="Quarks Utilities" packages="quarks.metrics,quarks.metrics.*"/> |
| <group title="Quarks Low-Level API" packages="quarks.graph,quarks.graph.*,quarks.oplet,quarks.oplet.*,quarks.window"/> |
| <group title="Quarks SPI" packages="quarks.*.spi.*"/> |
| </javadoc> |
| </target> |
| |
| <target name="release" depends="clean,setcommitversion,all,docs,create_release_bundle"/> |
| |
| <target name="create_release_bundle"> |
| <!-- Build Java7 and Android versions --> |
| <ant dir="platform/java7" target="retro7" useNativeBasedir="true"/> |
| <ant dir="platform/android" target="all" useNativeBasedir="true"/> |
| |
| <mkdir dir="${release.dir}" /> |
| <property name="releasefilename" value="${release.dir}/quarks-v${quarks.version}-${DSTAMP}-${TSTAMP}.tgz"/> |
| <tar compression="gzip" longfile="gnu" destfile="${releasefilename}"> |
| <tarfileset dir="${target.dir}" prefix="quarks" |
| excludes="**/*.sh"/> |
| <tarfileset dir="${target.dir}" prefix="quarks" |
| includes="**/*.sh" filemode="755"/> |
| </tar> |
| <checksum file="${releasefilename}"/> |
| <checksum algorithm="sha1" file="${releasefilename}"/> |
| </target> |
| |
| </project> |