hc-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rola...@apache.org
Subject svn commit: r440076 - /jakarta/httpcomponents/httpclient/trunk/build.xml
Date Mon, 04 Sep 2006 13:48:40 GMT
Author: rolandw
Date: Mon Sep  4 06:48:39 2006
New Revision: 440076

URL: http://svn.apache.org/viewvc?view=rev&rev=440076
Log:
new build process for HttpClient, currently builds a single JAR for all, addon targets are
pointless yet

Modified:
    jakarta/httpcomponents/httpclient/trunk/build.xml

Modified: jakarta/httpcomponents/httpclient/trunk/build.xml
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/build.xml?view=diff&rev=440076&r1=440075&r2=440076
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/build.xml (original)
+++ jakarta/httpcomponents/httpclient/trunk/build.xml Mon Sep  4 06:48:39 2006
@@ -1,53 +1,512 @@
-<project name="Jakarta HttpCompomponents HttpClient" default="compile" basedir=".">
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ -->
+
+<project name="HttpClient" basedir="." default="package-src">
+<description>
+HttpClient: Jakarta HttpComponents Client
+</description>
+
+
+<!-- Definition of the local environment.
+        The default location of the build.properties assumes that you are
+        building from the full tree of all HTTP components, and have a
+        single build.properties file located in ${root}/project/. If this is
+        not the case, override property local.properties when calling Ant.
+
+        Use this file to specify the location of external dependencies,
+        and to override other properties defined below if you have to.
+
+        External dependencies for which there is a default location:
+          httpcore.jar        - always
+          javadoc.j2sdk.link  - for javadoc
+          dist.core.api       - for javadoc
+
+        External dependencies for which there is no default location:
+          commons-logging.jar - (to be added to default dependencies)
+          junit.jar           - for test and clover targets
+          clover.jar          - for clover target
+  -->
+<property name="local.properties" location="../project/build.properties" />
+<property file="${local.properties}" />
+
+
+<!-- component and version information -->
+<property name="comp.client.name"
+         value="httpclient"/>
+<property name="comp.client.title"
+         value="Jakarta HttpComponents Client"/>
+<property name="comp.client.version"
+         value="SNAPSHOT"/>
+
+<!-- external dependencies
+        These are prime candidates for overriding in local.properties.
+        The defaults assume again that you are building from the full tree
+        of HTTP components, and that other components use the default
+        build settings.
+        The '.jar properties must be set to either to a JAR file in which
+        the classes are packaged, or to a directory tree holding them.
+  -->
+
+<property name="httpcore.home" location="../httpcore" />
+<property name="httpcore.jar"
+      location="${httpcore.home}/module-main/target/classes" />
+<property name="dist.core.api"
+      location="${httpcore.home}/dist/docs/api/" />
+
+<path id="classpath.client.compile">
+  <pathelement location="${httpcore.jar}"/>
+<!--     <pathelement location="${commons-logging.jar}"/> -->
+</path>
+
+<path id="classpath.client.javadoc">
+  <path refid="classpath.client.compile" />
+  <!-- add dependencies for contrib classes for which to JavaDoc -->
+</path>
+
+
+<!-- directory structure of the source tree -->
+<property name="comp.client.home"  value="${basedir}"/>
+<property name="comp.client.src"   value="${comp.client.home}/src/java"/>
+<property name="comp.client.tests" value="${comp.client.home}/src/test"/>
+<property name="comp.client.xmpls" value="${comp.client.home}/src/examples"/>
+<property name="comp.client.contr" value="${comp.client.home}/src/contrib"/>
+
+
+<!-- locations for intermediate and final build results
+        For consistency with other builds, the temporary files are
+        located by default below "target/", final results below "dist/".
+  -->
+<property name="build.client.home"    value="${comp.client.home}/target"/>
+<property name="build.client.classes" value="${build.client.home}/classes"/>
+<property name="build.client.tests"   value="${build.client.home}/tests"/>
+<property name="build.client.xmpls"   value="${build.client.home}/examples"/>
+<property name="build.client.contr"   value="${build.client.home}/contrib"/>
+<property name="build.client.clover"  value="${build.client.home}/clover"/>
+
+<property name="dist.client.home"     value="${comp.client.home}/dist"/>
+<property name="dist.client.docs"     value="${dist.client.home}/docs"/>
+<property name="dist.client.api"      value="${dist.client.docs}/api"/>
+
+<property name="jar.client.src.name"
+         value="jakarta-${comp.client.name}-${comp.client.version}.jar" />
+<property name="jar.client.addon.name"
+         value="jakarta-${comp.client.name}-addon-${comp.client.version}.jar" />
+
+
+<!-- compiler and javadoc setup -->
+<property name="compile.debug"       value="true"/>
+<property name="compile.deprecation" value="true"/>
+<property name="compile.optimize"    value="true"/>
+<property name="compile.source"      value="1.4"/>
+<property name="compile.target"      value="1.4"/>
+<property name="javadoc.access"      value="protected"/>
+
+<property name="javadoc.j2sdk.link"
+         value="http://java.sun.com/j2se/1.4.2/docs/api/" />
+
+
+<!-- build targets ======================================================== -->
+
+<target name="echo-properties"
+        description="echo properties to verify the build setup"
+>
+<echo>
+General
+  component         ${comp.client.name}
+  component title   ${comp.client.title}
+  component version ${comp.client.version}
+  base directory    ${basedir}
+  local properties  ${local.properties}
+
+Dependencies
+  HttpCore        ${httpcore.jar}
+  Commons Logging ${commons-logging.jar}
+  JUnit           ${junit.jar}
+  Clover          ${clover.jar}
+
+Source Tree
+  base     ${comp.client.home}
+  main     ${comp.client.src}
+  tests    ${comp.client.tests}
+  examples ${comp.client.xmpls}
+  contrib  ${comp.client.contr}
+
+Output
+  temp    ${build.client.home}
+  final   ${dist.client.home}
+  javadoc ${dist.client.api}
+</echo>
+</target>
+
+
+<!-- traditional targets ======================================================
+        These targets match the ones before the build restructuring, except:
+        - "javadoc" does not depend on "compile"
+        - "clover" will always recompile the source and tests
+  -->
+
+<target name="compile" depends="compile-src" />
+<target name="package" depends="package-src" />
+<target name="javadoc" depends="javadoc-src" />
+<target name="test"    depends="compile-src,run-tests" />
+<target name="clover"  depends="run-clover" />
+<target name="clean"   depends="clean-build,clean-dist" />
+
+
+<!-- combined compilation targets =============================================
+        For external invocation.
+        See also the packaging and test/verification targets below
+  -->
+
+<target name="compile-all"
+        depends="compile-src,compile-tests,
+                 compile-examples,compile-contrib"
+        description="compiles everything, not from scratch"
+/>
+<target name="clean-compile"
+        depends="clean-src,clean-tests,
+                 clean-examples,clean-contrib"
+        description="cleans intermediate files from compilation"
+/>
+<target name="compile-all-fs"
+        depends="clean-compile,compile-all"
+        description="compiles everything from scratch"
+/>
+
+
+<!-- compile and clean targets ================================================
+        For compiling and recompiling specific parts of HttpClient code.
+        These targets do NOT define dependencies between eachother.
+        Direct invocation of these targets is for those who know what they do!
+  -->
+
+<target name="compile-src" depends="build-init">
+
+	<mkdir dir="${build.client.classes}" />
+        <javac destdir     ="${build.client.classes}"
+               debug       ="${compile.debug}"
+               deprecation ="${compile.deprecation}"
+               optimize    ="${compile.optimize}"
+               source      ="${compile.source}"
+               target      ="${compile.target}"
+        >
+          <src>
+            <pathelement location="${comp.client.src}"/>
+          </src>
+          <classpath>
+            <path refid="classpath.client.compile"/>
+          </classpath>
+        </javac>
+</target>
+<target name="clean-src">
+	<delete dir="${build.client.classes}" quiet="true" />
+</target>
+
+
+<target name="compile-tests" depends="build-init">
+	<mkdir dir="${build.client.tests}" />
+        <javac destdir     ="${build.client.tests}"
+               debug       ="${compile.debug}"
+               deprecation ="${compile.deprecation}"
+               optimize    ="${compile.optimize}"
+               source      ="${compile.source}"
+               target      ="${compile.target}"
+        >
+          <src>
+            <pathelement path="${comp.client.tests}"/>
+          </src>
+          <classpath>
+            <path refid="classpath.client.compile"/>
+            <pathelement location="${build.client.classes}"/>
+            <pathelement location="${junit.jar}"/>
+          </classpath>
+        </javac>
+</target>
+<target name="clean-tests">
+	<delete dir="${build.client.tests}" quiet="true" />
+</target>
+
+
+<target name="compile-examples" depends="build-init">
+	<mkdir dir="${build.client.xmpls}" />
+        <javac destdir     ="${build.client.xmpls}"
+               debug       ="${compile.debug}"
+               deprecation ="${compile.deprecation}"
+               optimize    ="${compile.optimize}"
+               source      ="${compile.source}"
+               target      ="${compile.target}"
+        >
+          <src>
+            <pathelement path="${comp.client.xmpls}"/>
+          </src>
+          <classpath>
+            <path refid="classpath.client.compile"/>
+            <pathelement location="${build.client.classes}"/>
+          </classpath>
+        </javac>
+</target>
+<target name="clean-examples">
+	<delete dir="${build.client.xmpls}" quiet="true" />
+</target>
+
+
+<target name="compile-contrib" depends="build-init">
+	<mkdir dir="${build.client.contr}" />
+        <javac destdir     ="${build.client.contr}"
+               debug       ="${compile.debug}"
+               deprecation ="${compile.deprecation}"
+               optimize    ="${compile.optimize}"
+               source      ="${compile.source}"
+               target      ="${compile.target}"
+        >
+          <src>
+            <pathelement path="${comp.client.contr}"/>
+          </src>
+          <classpath>
+            <path refid="classpath.client.compile"/>
+            <pathelement location="${build.client.classes}"/>
+          </classpath>
+        </javac>
+</target>
+<target name="clean-contrib">
+	<delete dir="${build.client.contr}" quiet="true" />
+</target>
+
+
+<!-- packaging and verification targets =======================================
+        For building JARs and running tests.
+
+        Targets for building JARs define dependencies on compilation targets.
+        Unlike with Maven, running tests is not a dependency for packaging.
+
+        The plain test target defines dependencies on the test classes, but
+        not on the classes to be tested. It should be possible to run a test
+        target without affecting the subject of the test. The "from scratch"
+        test target defines transitive dependencies on the subject classes.
+  -->
+
+<target name="package-src"
+     depends="dist-init,compile-src"
+ description="builds the JAR with HttpClient classes"
+>
+        <jar destfile="${dist.client.home}/${jar.client.src.name}">
+          <!-- manifest? -->
+          <!-- timestamp in meta-inf? -->
+          <fileset dir="${build.client.classes}" includes="**" />
+        </jar>    
+</target>
+<target name="package-src-fs"
+     depends="clean-src,package-src"
+ description="builds the JAR with HttpClient classes, compiling from scratch"
+/>
+
+
+<target name="package-addon"
+     depends="dist-init,compile-src,
+              compile-examples,compile-contrib"
+ description="builds the JAR with HttpClient examples and contributions"
+>
+        <jar destfile="${dist.client.home}/${jar.client.addon.name}">
+          <!-- manifest? -->
+          <!-- timestamp in meta-inf? -->
+          <fileset dir="${build.client.xmpls}" includes="**" />
+          <fileset dir="${build.client.contr}" includes="**" />
+        </jar>    
+</target>
+<target name="package-addon-fs"
+     depends="clean-examples,clean-contrib,package-addon"
+ description="builds the JAR with HttpClient examples and contributions, compiling them from
scratch"
+/>
+
+
+<target name="run-tests"
+     depends="build-init,compile-tests"
+ description="runs unit tests on HttpClient classes"
+>
+        <copy todir="${build.client.tests}" filtering="on">
+          <fileset dir="${comp.client.tests}" excludes="**/*.java" />
+        </copy>
+        <!-- don't use Ant optional JUnit tasks here -->
+        <java classname="junit.textui.TestRunner"
+              fork="yes" failonerror="yes"
+        >
+          <arg value="org.apache.httpclient.TestAll"/>
+          <classpath>
+            <path refid="classpath.client.compile"/>
+            <pathelement location="${junit.jar}"/>
+            <pathelement location="${clover.jar}"/>
+            <pathelement location="${build.client.classes}"/>
+            <pathelement location="${build.client.tests}"/>
+          </classpath>
+      </java>
+</target>
+<target name="run-tests-fs"
+     depends="clean-build,compile-src,run-tests"
+/>
+
+
+<!-- Clover always needs a recompile to instrument the source code.
+     clean-build enforces the recompilation, clover-init prepares
+     the Ant environment for Clover instrumentation.
+  -->
+<target name="run-clover"
+     depends="clean-build,clover-init,compile-src,run-tests"
+ description="runs Clover on HttpClient, recompiling everything from scratch"
+>
+    <echoproperties prefix="clover"/>
+    <mkdir dir="${build.client.clover}"/>
+    <clover-report>
+       <current outfile="${build.client.clover}/coverage-report">
+          <format type="html"/>
+       </current>
+    </clover-report>
+</target>
+
+
+<target name="javadoc-src"
+        description="generates JavaDoc for the HttpClient classes"
+>
+        <mkdir dir="${dist.client.api}" />
+        <javadoc destdir="${dist.client.api}"
+                  access="${javadoc.access}"
+                 version="true"
+                  author="true"
+             windowtitle="${comp.client.title} (Version ${comp.client.version})"
+        >
+          <packageset dir="${comp.client.src}">
+            <include name="org/apache/http/**" />
+            <include name="org/apache/httpclient/**" />
+          </packageset>
+
+          <group title="API">
+            <package name="org.apache.http.conn" />
+            <package name="org.apache.http.conn*" />
+            <package name="org.apache.http.cookie" />
+            <package name="org.apache.http.cookie.params" />
+            <package name="org.apache.httpclient" />
+          </group>
+          <group title="Implementation">
+            <package name="*.impl.*" />
+          </group>
+    
+          <classpath refid="classpath.client.javadoc"/>
+          <link href="${javadoc.j2sdk.link}"/>
+          <link href="${dist.core.api}"/>
+
+          <doctitle>${comp.client.title}</doctitle>
+          <bottom>Copyright (c) 2005-2006 - Apache Software Foundation</bottom>
+        </javadoc>
+</target>
+
+
+<target name="javadoc-addon"
+        description="generates JavaDoc including examples and contributions"
+>
+        <mkdir dir="${dist.client.api}" />
+        <javadoc destdir="${dist.client.api}"
+                  access="${javadoc.access}"
+                 version="true"
+                  author="true"
+             windowtitle="${comp.client.title} (Version ${comp.client.version})"
+        >
+          <packageset dir="${comp.client.src}">
+            <include name="org/apache/http/**" />
+          </packageset>
+          <packageset dir="${comp.client.xmpls}">
+            <include name="org/apache/http/**" />
+          </packageset>
+          <packageset dir="${comp.client.contr}">
+            <include name="org/apache/http/**" />
+          </packageset>
+
+          <group title="API">
+            <package name="org.apache.http.client" />
+          </group>
+          <group title="Implementation">
+            <package name="org.apache.http.client.impl*" />
+          </group>
+          <group title="Examples">
+            <package name="org.apache.http.examples*" />
+          </group>
+          <group title="Contributions (unsupported)">
+            <package name="org.apache.http.client.contrib*" />
+          </group>
+    
+          <classpath refid="classpath.client.javadoc"/>
+          <link href="${javadoc.j2sdk.link}"/>
+          <link href="${dist.core.api}"/>
+
+          <doctitle>${comp.client.title}</doctitle>
+          <bottom>Copyright (c) 2005-2006 - Apache Software Foundation</bottom>
+        </javadoc>
+</target>
+
+
+<!-- generic and helper targets =========================================== -->
+
+<target name="build-init">
+        <mkdir dir="${build.client.home}" />
+</target>
+<target name="clean-build"
+        description="cleans all intermediate files, including test reports"
+>
+        <delete dir="${build.client.home}" quiet="true" />
+</target>
+
+<target name="dist-init">
+        <mkdir dir="${dist.client.home}" />
+        <!-- timestamp? (in build directory!) -->
+        <!-- manifest? (in build directory!) -->
+</target>
+<target name="clean-dist"
+        description="cleans all final build results"
+>
+        <!-- By default, dist.client.docs and dist.client.api are located
+             below dist.client.home and will be cleaned here. If their
+             location is redefined to be somewhere else, they will not
+             be cleaned here. Use the targets dist-docs-clean or
+             dist-api-clean to achieve that.
+          -->
+        <delete dir="${dist.client.home}" quiet="true" />
+        <!-- delete timestamps and manifests from build.client.home? -->
+</target>
+<target name="dist-docs-clean">
+        <delete dir="${dist.client.docs}" quiet="true" />
+</target>
+<target name="dist-api-clean">
+        <delete dir="${dist.client.api}" quiet="true" />
+</target>
+
+
+<target name="clover-init">
+        <taskdef resource="clovertasks" />
+        <property name="build.client.clover.db"
+              location="${build.client.clover}/database" />
+        <mkdir dir="${build.client.clover.db}"/>
+        <!-- This task prepares the Ant environment for Clover instrumentation.
+             Everything compiled afterwards will be instrumented if it matches
+             the fileset(s) defined here.
+          -->
+        <clover-setup initString="${build.client.clover.db}/coverage.db" >
+           <fileset dir="${comp.client.src}" includes="**" />
+        </clover-setup>
+</target>
 
-  <property file="${basedir}/build.properties"/>
-  <property file="${basedir}/../project/build.properties"/>
-  <property file="${user.home}/build.properties"/>
 
-<!-- ========== Required component properties ============================= -->
-
-  <property name="component.name"          value="httpclient"/>
-  <property name="component.title"         value="Jakarta HttpComponents HttpClient"/>
-  <property name="component.version"       value="4.0-alpha1-SNAPSHOT"/>
-  <property name="component.home"          value="${basedir}"/>
-  <property name="component.src"           value="${component.home}/src/java"/>
-  <property name="component.tests"         value="${component.home}/src/test"/>
-  <property name="component.xmpls"         value="${component.home}/src/examples"/>
-   
-<!-- ========== External dependencies ===================================== -->
-
-  <property name="http.core.home"         value="../httpcore"/>
-  <property name="http.core.classes"      value="${http.core.home}/target/classes"/>
-
-  <path id="component.depends">
-    <pathelement location="${component.classes}"/>
-    <pathelement location="${http.core.classes}"/>
-  </path>
-
-<!-- ========== Import common targets and macrdefs ======================== -->
-
-  <import file="../project/build-common.xml"/>
-
-<!-- ========== Targets: "External" Targets: Compilation ================== -->
-
-  <target name="compile" depends="prepare">
-    <do-compile/>
-  </target>
-
-  <target name="test" depends="compile">
-    <do-test testentry="org.apache.httpclient.TestAll"/>
-  </target>
-
-  <target name="javadoc" depends="compile">
-    <do-javadoc packagenames ="org.apache.http.*"/>
-  </target>
-
-  <target name="clover" depends="clover-db, test">
-    <do-clover/>
-  </target>
-
-  <target name="package" depends="compile">
-    <do-package/>
-  </target>
-
-</project>
+</project><!-- HttpClient -->



Mime
View raw message