|
| 1 | +<project name="MessagePack for Java" default="jar" |
| 2 | + xmlns:ivy="antlib:org.apache.ivy.ant" |
| 3 | + xmlns:mvn="urn:maven-artifact-ant"> |
| 4 | + |
| 5 | + <property name="Name" value="MessagePack"/> |
| 6 | + <property name="name" value="msgpack"/> |
| 7 | + <property name="version" value="0.0.1"/> |
| 8 | + <property name="fullname" value="${name}-${version}"/> |
| 9 | + <property name="year" value="2011"/> |
| 10 | + |
| 11 | + <!-- Load user's default properties. --> |
| 12 | + <property file="${user.home}/build.properties" /> |
| 13 | + |
| 14 | + <property name="src.dir" value="${basedir}/src/main/java"/> |
| 15 | + <property name="java.src.dir" value="${src.dir}/"/> |
| 16 | + <property name="build.dir" value="${basedir}/build"/> |
| 17 | + <property name="lib.dir" value="${basedir}/lib"/> |
| 18 | + <property name="dist.dir" value="${basedir}/dist"/> |
| 19 | + |
| 20 | + <property name="build.classes" value="${build.dir}/classes"/> |
| 21 | + <property name="build.doc" value="${build.dir}/doc"/> |
| 22 | + <property name="build.javadoc" value="${build.doc}/api/"/> |
| 23 | + <property name="build.javadoc.log" value="${build.dir}/javadoc.log"/> |
| 24 | + |
| 25 | + <property name="test.count" value="100"/> |
| 26 | + <property name="test.junit.output.format" value="plain"/> |
| 27 | + <property name="test.java.src.dir" value="${basedir}/src/test/java"/> |
| 28 | + <property name="test.java.build.dir" value="${build.dir}/test"/> |
| 29 | + <property name="test.java.classes" value="${test.java.build.dir}/classes"/> |
| 30 | + <property name="test.java.include" value="Test*"/> |
| 31 | + |
| 32 | + <property name="javac.encoding" value="ISO-8859-1"/> |
| 33 | + <property name="javac.debug" value="on"/> |
| 34 | + <property name="javac.optimize" value="on"/> |
| 35 | + <property name="javac.deprecation" value="off"/> |
| 36 | + <property name="javac.version" value="1.6"/> |
| 37 | + <property name="javac.args" value=""/> |
| 38 | + <property name="javac.args.warnings" value="-Xlint:unchecked"/> |
| 39 | + |
| 40 | + <property name="javadoc.link.java" |
| 41 | + value="http://java.sun.com/javase/6/docs/api/"/> |
| 42 | + <property name="javadoc.packages" value="org.${name}.*"/> |
| 43 | + |
| 44 | + <!-- ivy settings --> |
| 45 | + <property name="ivy.version" value="2.1.0"/> |
| 46 | + <property name="ivy.url" |
| 47 | + value="http://repo2.maven.org/maven2/org/apache/ivy/ivy" /> |
| 48 | + <property name="ivy.home" value="${user.home}/.ant" /> |
| 49 | + <property name="ivy.lib" value="${build.dir}/lib"/> |
| 50 | + <property name="ivy.test.lib" value="${build.dir}/test/lib"/> |
| 51 | + <property name="mvn.repo" |
| 52 | + value="https://repository.apache.org/content/repositories/snapshots"/> |
| 53 | + |
| 54 | + <!-- the normal classpath --> |
| 55 | + <path id="libs"> |
| 56 | + <fileset dir="${ivy.lib}"> |
| 57 | + <include name="**/*.jar" /> |
| 58 | + </fileset> |
| 59 | + </path> |
| 60 | + <path id="java.classpath"> |
| 61 | + <pathelement location="${build.classes}"/> |
| 62 | + <fileset dir="${lib.dir}"> |
| 63 | + <include name="**/*.jar" /> |
| 64 | + <exclude name="**/excluded/" /> |
| 65 | + </fileset> |
| 66 | + <fileset dir="${ant.home}/lib"> |
| 67 | + <include name="ant.jar" /> |
| 68 | + </fileset> |
| 69 | + <path refid="libs" /> |
| 70 | + </path> |
| 71 | + <path id="test.libs"> |
| 72 | + <fileset dir="${ivy.test.lib}"> |
| 73 | + <include name="**/*.jar" /> |
| 74 | + </fileset> |
| 75 | + </path> |
| 76 | + <path id="test.java.classpath"> |
| 77 | + <pathelement location="${test.java.classes}" /> |
| 78 | + <path refid="java.classpath"/> |
| 79 | + <path refid="test.libs"/> |
| 80 | + </path> |
| 81 | + |
| 82 | + <!-- init & clean --> |
| 83 | + <target name="init"> |
| 84 | + <mkdir dir="${build.dir}" /> |
| 85 | + <mkdir dir="${lib.dir}" /> |
| 86 | + <mkdir dir="${build.classes}" /> |
| 87 | + |
| 88 | + <mkdir dir="${test.java.build.dir}"/> |
| 89 | + <mkdir dir="${test.java.classes}"/> |
| 90 | + |
| 91 | + <mkdir dir="${ivy.lib}"/> |
| 92 | + <mkdir dir="${ivy.test.lib}"/> |
| 93 | + <condition property="ivy.jar.exists"> |
| 94 | + <available file="${lib.dir}/ivy-${ivy.version}.jar"/> |
| 95 | + </condition> |
| 96 | + </target> |
| 97 | + <target name="clean"> |
| 98 | + <delete dir="${build.dir}" /> |
| 99 | + </target> |
| 100 | + |
| 101 | + <!-- ivy targets --> |
| 102 | + <target name="ivy-download" unless="ivy.jar.exists" depends="init"> |
| 103 | + <delete dir="${lib.dir}" |
| 104 | + includes="ivy-*.jar" excludes="ivy-${ivy.version}.jar"/> |
| 105 | + <get src="${ivy.url}/${ivy.version}/ivy-${ivy.version}.jar" |
| 106 | + dest="${lib.dir}/ivy-${ivy.version}.jar" usetimestamp="true"/> |
| 107 | + </target> |
| 108 | + <target name="ivy-init" depends="ivy-download" unless="ivy.initialized"> |
| 109 | + <taskdef resource="org/apache/ivy/ant/antlib.xml" |
| 110 | + uri="antlib:org.apache.ivy.ant" classpathref="java.classpath"/> |
| 111 | + <!-- ensure that ivy taskdef is only run once, otw ant will error --> |
| 112 | + <property name="ivy.initialized" value="true"/> |
| 113 | + </target> |
| 114 | + |
| 115 | + <target name="ivy-retrieve-build" depends="init,ivy-init"> |
| 116 | + <ivy:retrieve type="jar" conf="build" |
| 117 | + pattern="${ivy.lib}/[artifact]-[revision].[ext]"/> |
| 118 | + </target> |
| 119 | + <target name="ivy-retrieve-test" depends="init,ivy-init"> |
| 120 | + <ivy:retrieve type="jar" conf="test" |
| 121 | + pattern="${ivy.test.lib}/[artifact]-[revision].[ext]"/> |
| 122 | + </target> |
| 123 | + |
| 124 | + <!-- compiler --> |
| 125 | + <macrodef name="java-compiler"> |
| 126 | + <attribute name="dest" default="${build.classes}"/> |
| 127 | + <attribute name="includes" default="**/*.java"/> |
| 128 | + <attribute name="excludes" default=""/> |
| 129 | + <attribute name="classpath" default="java.classpath"/> |
| 130 | + <element name="src" implicit="yes"/> |
| 131 | + <sequential> |
| 132 | + <javac |
| 133 | + destdir="@{dest}" |
| 134 | + includes="@{includes}" |
| 135 | + excludes="@{excludes}" |
| 136 | + encoding="${javac.encoding}" |
| 137 | + debug="${javac.debug}" |
| 138 | + optimize="${javac.optimize}" |
| 139 | + target="${javac.version}" |
| 140 | + source="${javac.version}" |
| 141 | + deprecation="${javac.deprecation}"> |
| 142 | + <compilerarg line="${javac.args} ${javac.args.warnings}" /> |
| 143 | + <classpath refid="@{classpath}"/> |
| 144 | + <src /> |
| 145 | + </javac> |
| 146 | + </sequential> |
| 147 | + </macrodef> |
| 148 | + |
| 149 | + <!-- compile --> |
| 150 | + <target name="compile" depends="init,ivy-retrieve-build"> |
| 151 | + <java-compiler> |
| 152 | + <src path="${java.src.dir}"/> |
| 153 | + </java-compiler> |
| 154 | + </target> |
| 155 | + |
| 156 | + <!-- test --> |
| 157 | + <macrodef name="test-runner"> |
| 158 | + <attribute name="files.location" /> |
| 159 | + <attribute name="tests.pattern" /> |
| 160 | + <attribute name="test.dir" default="${test.java.build.dir}" /> |
| 161 | + <sequential> |
| 162 | + <junit showoutput="yes" |
| 163 | + printsummary="withOutAndErr" |
| 164 | + haltonfailure="no" |
| 165 | + fork="yes" forkMode="once" |
| 166 | + errorProperty="tests.failed" failureProperty="tests.failed"> |
| 167 | + <sysproperty key="test.count" value="${test.count}"/> |
| 168 | + <sysproperty key="test.dir" value="@{test.dir}"/> |
| 169 | + <classpath refid="test.java.classpath"/> |
| 170 | + <formatter type="${test.junit.output.format}"/> |
| 171 | + <batchtest todir="${test.java.build.dir}" unless="testcase"> |
| 172 | + <fileset dir="@{files.location}" |
| 173 | + includes="@{tests.pattern}" |
| 174 | + excludes="**/${test.java.exclude}.java" /> |
| 175 | + </batchtest> |
| 176 | + <batchtest todir="${test.java.build.dir}" if="testcase"> |
| 177 | + <fileset dir="@{files.location}" includes="**/${testcase}.java"/> |
| 178 | + </batchtest> |
| 179 | + </junit> |
| 180 | + <fail if="tests.failed">Tests Failed!</fail> |
| 181 | + </sequential> |
| 182 | + </macrodef> |
| 183 | + <target name="compile-test" depends="ivy-retrieve-test,compile"> |
| 184 | + <java-compiler dest="${test.java.classes}" |
| 185 | + classpath="test.java.classpath"> |
| 186 | + <src path="${test.java.src.dir}/org" /> |
| 187 | + </java-compiler> |
| 188 | + </target> |
| 189 | + <target name="test" depends="init,compile-test"> |
| 190 | + <test-runner files.location="${test.java.src.dir}" |
| 191 | + tests.pattern="**/${test.java.include}.java"/> |
| 192 | + </target> |
| 193 | + |
| 194 | + <!-- jar --> |
| 195 | + <target name="jar" depends="compile"> |
| 196 | + <jar jarfile="${build.dir}/${name}-${version}.jar" basedir="${build.classes}" > |
| 197 | + <manifest> |
| 198 | + <section name="org/${name}"> |
| 199 | + <attribute name="Implementation-Title" value="${Name}"/> |
| 200 | + <attribute name="Implementation-Version" value="${version}"/> |
| 201 | + </section> |
| 202 | + </manifest> |
| 203 | + </jar> |
| 204 | + </target> |
| 205 | + |
| 206 | + <!-- javadoc --> |
| 207 | + <target name="javadoc" depends="compile" description="Generate javadoc"> |
| 208 | + <mkdir dir="${build.javadoc}"/> |
| 209 | + <record name="${build.javadoc.log}" action="start"/> |
| 210 | + <javadoc |
| 211 | + Locale="en_US" |
| 212 | + packagenames="org.${org}.${name}.*" |
| 213 | + destdir="${build.javadoc}" |
| 214 | + encoding="UTF-8" |
| 215 | + docencoding="UTF-8" |
| 216 | + author="true" |
| 217 | + version="true" |
| 218 | + use="true" |
| 219 | + windowtitle="${Name} ${version} API" |
| 220 | + doctitle="${Name} ${version} API" |
| 221 | + bottom="Copyright &copy; ${year} The ${Name} Project" |
| 222 | + > |
| 223 | + <packageset dir="${java.src.dir}"/> |
| 224 | + <link href="${javadoc.link.java}"/> |
| 225 | + <classpath > |
| 226 | + <path refid="java.classpath" /> |
| 227 | + </classpath> |
| 228 | + </javadoc> |
| 229 | + <record name="${build.javadoc.log}" action="stop"/> |
| 230 | + <condition property="javadoc.warnings"> |
| 231 | + <isfileselected file="${build.javadoc.log}"> |
| 232 | + <contains text=": warning - "/> |
| 233 | + </isfileselected> |
| 234 | + </condition> |
| 235 | + <fail if="javadoc.warnings">Javadoc warnings!</fail> |
| 236 | + </target> |
| 237 | + <target name="javadoc-jar" depends="javadoc"> |
| 238 | + <jar jarfile="${build.dir}/${fullname}-javadoc.jar"> |
| 239 | + <fileset dir="${build.javadoc}" includes="**/*"/> |
| 240 | + </jar> |
| 241 | + </target> |
| 242 | + |
| 243 | + <!-- sources --> |
| 244 | + <target name="source"> |
| 245 | + <jar jarfile="${build.dir}/${fullname}-sources.jar"> |
| 246 | + <fileset dir="${java.src.dir}" includes="**/*.java"/> |
| 247 | + </jar> |
| 248 | + </target> |
| 249 | + |
| 250 | + <!-- pom --> |
| 251 | + <target name="pom" depends="ivy-init"> |
| 252 | + <ivy:makepom ivyfile="${basedir}/ivy.xml" |
| 253 | + pomfile="${dist.dir}/${fullname}.pom"> |
| 254 | + <mapping conf="default" scope="compile"/> |
| 255 | + <mapping conf="test" scope="test"/> |
| 256 | + </ivy:makepom> |
| 257 | + </target> |
| 258 | + |
| 259 | + <!-- dist --> |
| 260 | + <target name="dist" depends="jar, pom, source, javadoc-jar" |
| 261 | + description="Build distribution"> |
| 262 | + <mkdir dir="${dist.dir}"/> |
| 263 | + <copy todir="${dist.dir}"> |
| 264 | + <fileset file="${build.dir}/${fullname}.jar"/> |
| 265 | + <fileset file="${build.dir}/${fullname}-sources.jar"/> |
| 266 | + <fileset file="${build.dir}/${fullname}-javadoc.jar"/> |
| 267 | + </copy> |
| 268 | + </target> |
| 269 | + |
| 270 | + <!-- maven: install msgpack into local m2 cache --> |
| 271 | + <target name="mvn-install" depends="jar, pom, source, javadoc-jar" |
| 272 | + description="Installs msgpack to local m2 cache"> |
| 273 | + <typedef resource="org/apache/maven/artifact/ant/antlib.xml" |
| 274 | + uri="urn:maven-artifact-ant" |
| 275 | + classpathref="java.classpath"/> |
| 276 | + <mvn:pom file="${dist.dir}/${fullname}.pom" id="msgpack"/> |
| 277 | + <mvn:install file="${build.dir}/${fullname}.jar"> |
| 278 | + <attach file="${build.dir}/${fullname}-sources.jar" |
| 279 | + classifier="sources" /> |
| 280 | + <attach file="${build.dir}/${fullname}-javadoc.jar" |
| 281 | + classifier="javadoc" /> |
| 282 | + <pom refid="msgpack"/> |
| 283 | + </mvn:install> |
| 284 | + </target> |
| 285 | + |
| 286 | + <!-- maven: create local repository into ${basedir}/maven2 --> |
| 287 | + <target name="mvn-deploy" depends="jar, pom, source, javadoc-jar" |
| 288 | + description="Deploys MessagePack to Maven repo."> |
| 289 | + <typedef resource="org/apache/maven/artifact/ant/antlib.xml" |
| 290 | + uri="urn:maven-artifact-ant" |
| 291 | + classpathref="java.classpath"/> |
| 292 | + <mvn:pom file="${dist.dir}/${fullname}.pom" id="msgpack"/> |
| 293 | + <mvn:deploy file="${build.dir}/${fullname}.jar"> |
| 294 | + <remoteRepository url="file://localhost/${basedir}/maven2/"/> |
| 295 | + <attach file="${build.dir}/${fullname}-sources.jar" |
| 296 | + classifier="sources" /> |
| 297 | + <attach file="${build.dir}/${fullname}-javadoc.jar" |
| 298 | + classifier="javadoc" /> |
| 299 | + <pom refid="msgpack"/> |
| 300 | + </mvn:deploy> |
| 301 | + </target> |
| 302 | + |
| 303 | +</project> |
0 commit comments