2015-12-04 12:18:45 +01:00
<?xml version="1.0" encoding="UTF-8"?>
2016-02-27 02:16:50 +01:00
<project name= "Hal" >
2016-02-28 02:10:45 +01:00
2017-08-29 15:46:29 +02:00
<!-- ________________________ PROPERTIES AND SETTINGS ________________________ -->
<!-- common properties -->
<property name= "root" value= "." />
<property name= "srcDir" value= "${root}/src" />
<property name= "testDir" value= "${root}/test" />
<property name= "libDir" value= "${root}/lib" />
<property name= "buildRoot" value= "${root}/build" />
<property name= "compileDir" value= "${buildRoot}/production" />
<property name= "compileTestDir" value= "${buildRoot}/test" />
<property name= "releaseDir" value= "${buildRoot}/release" />
<property name= "reportsDir" value= "${buildRoot}/reports" />
2017-05-24 16:05:49 +02:00
<property name= "releaseJar" value= "hal.jar" />
2020-06-25 23:36:37 +02:00
<property name= "zutilVersion" value= "1.0.250" />
2017-05-24 16:05:49 +02:00
2017-08-29 15:46:29 +02:00
<!-- ________________________ CLASSPATH ________________________ -->
2016-02-28 02:10:45 +01:00
2017-08-29 15:46:29 +02:00
<!-- define standard arguments for javac -->
<presetdef name= "javac" >
<javac includeantruntime= "false" />
</presetdef>
2016-02-28 02:10:45 +01:00
2017-08-29 15:46:29 +02:00
<!-- classpath included when building -->
<path id= "classpath.build" >
2016-02-28 02:23:32 +01:00
<fileset dir= "${libDir}" >
<include name= "**/*.jar" />
</fileset>
2018-12-03 19:21:15 +01:00
<pathelement location= "${compileDir}" />
</path>
<path id= "classpath.test" >
<pathelement location= "${compileTestDir}" />
<!-- include libraries used for building -->
<path refid= "classpath.build" />
</path>
<!-- ________________________ EXECUTION TARGETS ________________________ -->
<target name= "run" depends= "package-all" >
<java fork= "true" failonerror= "true" classname= "se.hal.HalServer" >
<classpath >
<pathelement path= "${releaseDir}/${releaseJar}" />
<pathelement path= "${releaseDir}/plugins/*" />
2020-06-22 11:46:48 +02:00
<pathelement path= "${releaseDir}/lib/*" />
2018-12-03 19:21:15 +01:00
</classpath>
</java>
</target>
<target name= "debug-remote" depends= "package" >
<java fork= "true" failonerror= "true" classname= "se.hal.HalServer" >
2016-07-17 03:00:03 +02:00
<jvmarg value= "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" />
2017-08-29 15:46:29 +02:00
<classpath >
<pathelement path= "${releaseDir}/${releaseJar}" />
<pathelement path= "${libDir}/*" /> <!-- wildcard may not be platform independent, ok? -->
</classpath>
</java>
</target>
2015-12-11 23:19:17 +01:00
2017-05-29 17:02:31 +02:00
<!-- Test targets -->
<target name= "test-all" depends= "test,test-plugins" />
2017-08-29 15:46:29 +02:00
<target name= "test" depends= "build-test" >
<mkdir dir= "${reportsDir}" />
<junit printsummary= "yes" haltonfailure= "false" fork= "true" >
<classpath refid= "classpath.test" />
<formatter type= "plain" usefile= "false" /> <!-- to screen -->
<formatter type= "xml" /> <!-- to file -->
<batchtest todir= "${reportsDir}" skipNonTests= "true" >
<fileset dir= "${compileTestDir}" includes= "**/*Test*.class" />
</batchtest>
</junit>
</target>
2016-02-27 02:16:50 +01:00
2017-05-29 17:02:31 +02:00
<target name= "test-plugins" depends= "build-test" >
<subant target= "test" verbose= "true" >
<fileset dir= "plugins/" includes= "*/build.xml" />
</subant>
</target>
2017-08-29 15:46:29 +02:00
<!-- ________________________ BUILD TARGETS ________________________ -->
2016-02-27 02:16:50 +01:00
2017-08-29 15:46:29 +02:00
<!-- clean all build paths -->
<target name= "clean" >
<delete includeemptydirs= "true" failonerror= "false" >
<fileset dir= "${buildRoot}" includes= "**/*" />
</delete>
2017-05-29 17:02:31 +02:00
<!-- clean plugins -->
<subant target= "clean" verbose= "true" >
<fileset dir= "plugins/" includes= "*/build.xml" />
</subant>
2017-08-29 15:46:29 +02:00
</target>
2016-02-27 02:16:50 +01:00
2017-05-29 17:02:31 +02:00
2017-08-29 15:46:29 +02:00
<!-- build product code -->
2017-05-29 17:02:31 +02:00
<target name= "build-all" depends= "build,build-plugins" />
2017-08-29 15:46:29 +02:00
<target name= "build" depends= "build-dependencies" >
<mkdir dir= "${compileDir}" />
<javac srcdir= "${srcDir}" destdir= "${compileDir}" debug= "yes" debugLevel= "lines,vars,source" fork= "yes" >
<classpath refid= "classpath.build" />
<include name= "**/*.java" />
<exclude name= "se/hal/tts/GoogleTTSClient.java" />
</javac>
<copy todir= "${compileDir}" >
<fileset dir= "${srcDir}"
excludes="**/*.java" />
</copy>
</target>
2016-02-28 02:10:45 +01:00
2017-08-29 15:46:29 +02:00
<target name= "build-dependencies" >
<mkdir dir= "${compileDir}" />
2020-06-25 17:00:28 +02:00
<delete includeemptydirs= "true" failonerror= "false" >
<fileset dir= "${libDir}" includes= "zutil-*" />
</delete>
<get src= "https://repo1.maven.org/maven2/se/koc/zutil/${zutilVersion}/zutil-${zutilVersion}.jar"
dest="${libDir}/" verbose="true" usetimestamp="true"/>
2017-08-29 15:46:29 +02:00
</target>
2016-02-27 02:16:50 +01:00
2017-08-29 15:46:29 +02:00
<target name= "build-plugins" depends= "build" >
<subant target= "build" verbose= "true" >
<fileset dir= "plugins/" includes= "*/build.xml" />
</subant>
</target>
2017-05-29 17:02:31 +02:00
2017-08-29 15:46:29 +02:00
<target name= "build-test" depends= "build" >
<mkdir dir= "${compileTestDir}" />
<javac srcdir= "${testDir}" destdir= "${compileTestDir}" debug= "yes" debugLevel= "lines,vars,source" fork= "yes" >
<classpath refid= "classpath.test" />
<include name= "**/*.java" />
</javac>
<copy todir= "${compileTestDir}" >
<fileset dir= "${testDir}"
excludes="**/*.java" />
</copy>
</target>
2016-02-27 02:16:50 +01:00
2017-05-29 17:02:31 +02:00
<!-- generate release packages -->
<target name= "package-all" depends= "package,package-plugins" />
2017-08-29 15:46:29 +02:00
<target name= "package" depends= "build" >
<copy todir= "${releaseDir}" >
<fileset file= "${root}/hal.conf.example" />
<fileset file= "${root}/hal-default.db" />
<fileset file= "${root}/logging.properties" />
<fileset file= "${root}/run.sh" />
</copy>
<copy todir= "${releaseDir}/lib" >
<fileset dir= "${libDir}" excludes= "junit-*.jar,hamcrest-*.jar" />
</copy>
<copy todir= "${releaseDir}/resource/web" >
<fileset dir= "resource/web" />
</copy>
<jar destfile= "${releaseDir}/${releaseJar}" basedir= "${compileDir}" />
</target>
2017-01-10 17:22:51 +01:00
2017-08-29 15:46:29 +02:00
<target name= "package-plugins" depends= "package" >
<subant target= "package" verbose= "true" >
<fileset dir= "plugins/" includes= "*/build.xml" />
</subant>
2017-05-29 17:02:31 +02:00
<!-- Copy plugin jars -->
<copy todir= "${releaseDir}/plugins" flatten= "true" includeEmptyDirs= "false" >
<fileset dir= "plugins/" >
<include name= "*/build/release/**" />
</fileset>
</copy>
<!-- Copy plugin libs -->
2017-05-29 17:14:09 +02:00
<copy todir= "${releaseDir}/lib" flatten= "true" includeEmptyDirs= "false" >
2017-05-29 17:02:31 +02:00
<fileset dir= "plugins/" >
<include name= "*/lib/**" />
</fileset>
</copy>
2017-08-29 15:46:29 +02:00
</target>
2016-02-27 02:16:50 +01:00
2017-08-29 15:46:29 +02:00
<!-- ________________________ UTILITY TARGETS ________________________ -->
2016-02-27 02:16:50 +01:00
2017-08-29 15:46:29 +02:00
<target name= "clear-aggr-data-from-db" depends= "" >
<exec executable= "sqlite3" >
<arg line= "hal.db 'DELETE FROM sensor_data_aggr'" />
</exec>
2016-02-27 02:16:50 +01:00
2017-08-29 15:46:29 +02:00
<!-- update all internal sensors aggregation version to indicate for peers that they need to re - sync all data -->
<exec executable= "sqlite3" >
<arg line= "hal.db 'UPDATE sensor SET aggr_version = (aggr_version+1) WHERE id = (SELECT sensor.id FROM user, sensor WHERE user.external == 0 AND sensor.user_id = user.id)'" />
</exec>
</target>
2016-02-28 02:10:45 +01:00
2015-12-07 16:47:48 +01:00
</project>