git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@371996 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -0,0 +1,221 @@ | |||
| <?xml version="1.0"?> | |||
| <!-- | |||
| 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. | |||
| --> | |||
| <document> | |||
| <properties> | |||
| <index value="1"/> | |||
| <title>AntUnit</title> | |||
| </properties> | |||
| <body> | |||
| <section name="Idea"> | |||
| <p>Initially all tests for Ant tasks were written as individual | |||
| <a href="http://www.junit.org/">JUnit</a> test cases. Pretty | |||
| soon it was clear that most tests needed to perform common tasks | |||
| like reading a build file, intializing a project instance with | |||
| it and executing a target. At this point <a | |||
| href="http://svn.apache.org/viewcvs.cgi/ant/core/trunk/src/testcases/org/apache/tools/ant/BuildFileTest.java">BuildFileTest</a> | |||
| was invented, a base class for almost all task test cases.</p> | |||
| <p>BuildFileTest works fine and in fact has been picked up by <a | |||
| href="http://ant-contrib.sf.net/">the Ant-Contrib Project</a> | |||
| and others as well.</p> | |||
| <p>Over time a new pattern evolved, more and more tests only | |||
| executed a target and didn't check any effects. Instead that | |||
| target contained the assertions as a <code><fail></code> | |||
| task. This is an example taken from the build file for the | |||
| ANTLR task (using Ant 1.7 features):</p> | |||
| <source><![CDATA[ | |||
| <target name="test3" depends="setup"> | |||
| <antlr target="antlr.g" outputdirectory="${tmp.dir}"/> | |||
| <fail> | |||
| <condition> | |||
| <!-- to prove each of these files exists; | |||
| ANTLR >= 2.7.6 leaves behind new (.smap) files as well. --> | |||
| <resourcecount when="ne" count="5"> | |||
| <fileset dir="${tmp.dir}"> | |||
| <include name="CalcParserTokenTypes.txt" /> | |||
| <include name="CalcParserTokenTypes.java" /> | |||
| <include name="CalcLexer.java" /> | |||
| <include name="CalcParser.java" /> | |||
| <include name="CalcTreeWalker.java" /> | |||
| </fileset> | |||
| </resourcecount> | |||
| </condition> | |||
| </fail> | |||
| </target> | |||
| ]]></source> | |||
| <p>where the corresponding JUnit testcase has been reduced | |||
| to</p> | |||
| <source><![CDATA[ | |||
| ... | |||
| public class ANTLRTest extends BuildFileTest { | |||
| private final static String TASKDEFS_DIR = "src/etc/testcases/taskdefs/optional/antlr/"; | |||
| public ANTLRTest(String name) { | |||
| super(name); | |||
| } | |||
| public void setUp() { | |||
| configureProject(TASKDEFS_DIR + "antlr.xml"); | |||
| } | |||
| public void tearDown() { | |||
| executeTarget("cleanup"); | |||
| } | |||
| public void test3() { | |||
| executeTarget("test3"); | |||
| } | |||
| ... | |||
| } | |||
| ]]></source> | |||
| <p>This approach has a couple of advantages, one of them is that | |||
| it is very easy to translate an example build file from a bug | |||
| report into a test case. If you ask a user for a testcase for a | |||
| given bug in Ant, he now doesn't need to understand JUnit or how | |||
| to fit a test into Ant's existing tests any more.</p> | |||
| <p>AntUnit takes this approach to testing even further, it | |||
| removes JUnit completely and it comes with a set of predefined | |||
| <code><assert></code> tasks in order to reuse common kind | |||
| of checks.</p> | |||
| <p>It turns out that AntUnit lends itself as a solution to other | |||
| problems as well. The assertions are an easy way to validate a | |||
| setup before even starting the build process, for example. | |||
| AntUnit could also be used for functional and integration tests | |||
| outside of the scope of Ant tasks (assert contents of databases | |||
| after running an application, assert contents of HTTP responses | |||
| ...). This is an area that will need more research.</p> | |||
| </section> | |||
| <section name="Concepts"> | |||
| <subsection name="antunit Task"> | |||
| <p>The <antunit> task drives the tests much like | |||
| <junit> does for JUnit tests.</p> | |||
| <p>When called on a build file, the task will start a new Ant | |||
| project for that build file and scan for targets with names | |||
| that start with "test". For each such target it then will</p> | |||
| <ol> | |||
| <li>Execute the target named setUp, if there is one.</li> | |||
| <li>Execute the target itself - if this target depends on | |||
| other targets the normal Ant rules apply and the dependent | |||
| targets are executed first.</li> | |||
| <li>Execute the target names tearDown, if there is one.</li> | |||
| </ol> | |||
| </subsection> | |||
| <subsection name="Assertions"> | |||
| <p>The base task is <code><assertTrue></code>. It | |||
| accepts a single nested condition and throws a subclass of | |||
| BuildException named AssertionFailedException if that | |||
| condition evaluates to false.</p> | |||
| <p>This task could have been implemented using | |||
| <code><macrodef></code> and <code><fail></code>, | |||
| but in fact it is a "real" task so that it is possible to | |||
| throw a subclass of BuildException. The | |||
| <code><antunit></code> task catches this exception and | |||
| marks the target as failed, any other type of Exception | |||
| (including other BuildException) are test errors.</p> | |||
| <p>Together with <code><assertTrue></code> there are | |||
| many predefined assertions for common conditions, most of | |||
| these are only macros.</p> | |||
| </subsection> | |||
| <subsection name="Other Tasks"> | |||
| <p>The <code><logcapturer></code> captures all messages | |||
| that pass Ant's logging system and provides them via a | |||
| reference inside of the project. If you want to assert | |||
| certain log messages, you need to start this task (prior to | |||
| your target under test) and use the | |||
| <code><assertLogContains></code> assertion.</p> | |||
| <p><code><expectFailure></code> is a task container that | |||
| catches any BuildException thrown by tasks nested into it. If | |||
| no exception has been thrown it will cause a test failure (by | |||
| throwing an AssertionFailedException).</p> | |||
| </subsection> | |||
| <subsection name="AntUnitListener"> | |||
| <p>Part of the library is the <code>AntUnitListener</code> | |||
| interface that can be used to record test results. The | |||
| <antunit> task accepts arbitrary many listeners and | |||
| relays test results to them.</p> | |||
| <p>Currently only a single implementation | |||
| <code><plainlistener></code> modelled after the "plain" | |||
| JUnit listener is bundeled with the library.</p> | |||
| </subsection> | |||
| </section> | |||
| <section name="Examples"> | |||
| <p>This is a way to test that <code><touch></code> | |||
| actually creates a file if it doesn't exist:</p> | |||
| <source><![CDATA[ | |||
| <project xmlns:au="antlib:org.apache.ant.antunit"> | |||
| <!-- is called prior to the test --> | |||
| <target name="setUp"> | |||
| <property name="foo" value="foo"/> | |||
| </target> | |||
| <!-- is called after the test, if if that causes an error --> | |||
| <target name="tearDown"> | |||
| <delete file="${foo}" quiet="true"/> | |||
| </target> | |||
| <!-- the actual test case --> | |||
| <target name="testTouchCreatesFile"> | |||
| <au:assertFileDoesntExist name="${foo}"/> | |||
| <touch file="${foo}"/> | |||
| <au:assertFileExists name="${foo}"/> | |||
| </target> | |||
| </project> | |||
| ]]></source> | |||
| <p>When running a task like</p> | |||
| <source><![CDATA[ | |||
| <au:antunit> | |||
| <fileset dir="." includes="touch.xml"/> | |||
| <au:plainlistener/> | |||
| </au:antunit> | |||
| ]]></source> | |||
| <p>from a buildfile of its own you'll get a result that looks like</p> | |||
| <source><![CDATA[ | |||
| ]]></source> | |||
| </section> | |||
| </body> | |||
| </document> | |||
| @@ -0,0 +1,146 @@ | |||
| <?xml version="1.0"?> | |||
| <!-- | |||
| 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. | |||
| --> | |||
| <document> | |||
| <properties> | |||
| <index value="1"/> | |||
| <title>.NET Ant Library</title> | |||
| </properties> | |||
| <body> | |||
| <section name="Idea"> | |||
| <p>This library doesn't strive to replace NAnt or MSBuild, its | |||
| main purpose is to help those of us who work on projects | |||
| crossing platform boundaries. With this library you can use Ant | |||
| to build and test the Java as well as the .NET parts of your | |||
| project.</p> | |||
| <p>This library provides a special version of the | |||
| <code><exec></code> task tailored to run .NET executables. | |||
| On Windows it will assume the Microsoft framework is around and | |||
| run the executable directly, while it will invoke Mono on any | |||
| other platform. Of course you can override these | |||
| assumptions.</p> | |||
| <p>Based on this a few tasks to run well known .NET utilities | |||
| from within Ant are provided, namely tasks to run <a | |||
| href="http://www.nunit.org/">NUnit</a>, <a | |||
| href="http://nant.sf.net/">NAnt</a> and <a | |||
| href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=27&SiteID=1">MSBuild</a>.</p> | |||
| <p>There also is some experimental <a | |||
| href="http://wix.sf.net/">Wix</a> task, but it probably doesn't | |||
| do anything useful at all.</p> | |||
| </section> | |||
| <section name="Tasks"> | |||
| <subsection name="dotnetexec"> | |||
| <p>Runs a .NET executable.</p> | |||
| </subsection> | |||
| <subsection name="nunit"> | |||
| <p>Runs NUnit tests.</p> | |||
| </subsection> | |||
| <subsection name="nant"> | |||
| <p>Invokes NAnt, either on an external file or a build file | |||
| snippet contained inside your Ant build file.</p> | |||
| </subsection> | |||
| <subsection name="msbuild"> | |||
| <p>Invokes MSBuild, either on an external file or a build file | |||
| snippet contained inside your Ant build file.</p> | |||
| </subsection> | |||
| </section> | |||
| <section name="Examples"> | |||
| <subsection name="nant"> | |||
| <source><![CDATA[ | |||
| <project xmlns:dn="antlib:org.apache.ant.dotnet"> | |||
| <dn:nant> | |||
| <build> | |||
| <echo message="Hello world"/> | |||
| </build> | |||
| </dn:nant> | |||
| </project> | |||
| ]]></source> | |||
| <p>runs NAnt on the embedded <code><echo></code> | |||
| task, output looks like</p> | |||
| <source><![CDATA[ | |||
| Buildfile: test.xml | |||
| [dn:nant] NAnt 0.85 (Build 0.85.1932.0; rc3; 16.04.2005) | |||
| [dn:nant] Copyright (C) 2001-2005 Gerry Shaw | |||
| [dn:nant] http://nant.sourceforge.net | |||
| [dn:nant] | |||
| [dn:nant] Buildfile: file:///c:/DOKUME~1/STEFAN~1.BOD/LOKALE~1/Temp/build1058451555.xml | |||
| [dn:nant] Target framework: Microsoft .NET Framework 1.1 | |||
| [dn:nant] | |||
| [dn:nant] [echo] Hello world | |||
| [dn:nant] | |||
| [dn:nant] BUILD SUCCEEDED | |||
| [dn:nant] | |||
| [dn:nant] Total time: 0.2 seconds. | |||
| BUILD SUCCESSFUL | |||
| Total time: 2 seconds]]></source> | |||
| </subsection> | |||
| <subsection name="msbuild"> | |||
| <source><![CDATA[ | |||
| <project xmlns:dn="antlib:org.apache.ant.dotnet"> | |||
| <dn:msbuild> | |||
| <build> | |||
| <Message Text="Hello world" | |||
| xmlns="http://schemas.microsoft.com/developer/msbuild/2003"/> | |||
| </build> | |||
| </dn:msbuild> | |||
| </project>]]></source> | |||
| <p>runs MSBuild on the embedded <code><Message></code> | |||
| task, output looks like</p> | |||
| <source><![CDATA[ | |||
| Buildfile: test.xml | |||
| [dn:msbuild] Microsoft (R) Build Engine Version 2.0.50727.42 | |||
| [dn:msbuild] [Microsoft .NET Framework, Version 2.0.50727.42] | |||
| [dn:msbuild] Copyright (C) Microsoft Corporation 2005. All rights reserved. | |||
| [dn:msbuild] Build started 15.12.2005 20:21:56. | |||
| [dn:msbuild] __________________________________________________ | |||
| [dn:msbuild] Project "c:\Dokumente und Einstellungen\stefan.bodewig\Lokale Einstellungen\Temp\build1543310185.xml" (default targets): | |||
| [dn:msbuild] Target generated-by-ant: | |||
| [dn:msbuild] Hello world | |||
| [dn:msbuild] Build succeeded. | |||
| [dn:msbuild] 0 Warning(s) | |||
| [dn:msbuild] 0 Error(s) | |||
| [dn:msbuild] Time Elapsed 00:00:00.10 | |||
| BUILD SUCCESSFUL | |||
| Total time: 0 seconds | |||
| ]]></source> | |||
| </subsection> | |||
| </section> | |||
| </body> | |||
| </document> | |||
| @@ -1,6 +1,6 @@ | |||
| <?xml version="1.0"?> | |||
| <!-- | |||
| Copyright 2005 The Apache Software Foundation | |||
| Copyright 2005-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. | |||
| @@ -25,7 +25,128 @@ | |||
| <section name="Ant Libraries"> | |||
| <p>No Ant Library has left the sandbox yet.</p> | |||
| <a name="antunit"/> | |||
| <subsection name="AntUnit - Unit Test Framework for Ant Tasks"> | |||
| <p>AntUnit borrows ideas from JUnit 3.x and the <junit> | |||
| task. It provides a task that runs build files as unit tests | |||
| as well as a number of assertion tasks to support the | |||
| idea.</p> | |||
| <table> | |||
| <tr> | |||
| <th>Homepage:</th> | |||
| <td><a href="./antunit/index.html">http://ant.apache.org/antlibs/antunit/</a></td> | |||
| </tr> | |||
| <tr> | |||
| <th>SVN URL:</th> | |||
| <td><a href="https://svn.apache.org/repos/asf/ant/antlibs/antunit/trunk/">https://svn.apache.org/repos/asf/ant/antlibs/antunit/trunk/</a></td> | |||
| </tr> | |||
| <tr> | |||
| <th>ViewSVN:</th> | |||
| <td><a href="http://svn.apache.org/viewcvs.cgi/ant/antlibs/antunit/trunk/">http://svn.apache.org/viewcvs.cgi/ant/antlibs/antunit/trunk/</a></td> | |||
| </tr> | |||
| <tr> | |||
| <th>Ant compatibility:</th> | |||
| <td>Ant 1.7.x</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Added to sandbox:</th> | |||
| <td>2005-04-15</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Promoted from sandbox:</th> | |||
| <td>2005-11-22</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Latest Release:</th> | |||
| <td>None</td> | |||
| </tr> | |||
| </table> | |||
| </subsection> | |||
| <a name="dotnet"/> | |||
| <subsection name="DotNet - Improved Support for .NET projects"> | |||
| <p>Provides a simple infrastructure to execute .NET | |||
| applications from within Ant for different VMs so that the | |||
| user doesn't have to change the build file when she wants to | |||
| run Mono on Linux and Microsoft's VM on Windows.</p> | |||
| <p>Also contains <nant>, <nunit> and | |||
| <msbuild> tasks and an untested <wix> tasks.</p> | |||
| <table> | |||
| <tr> | |||
| <th>Homepage:</th> | |||
| <td><a href="./dotnet/index.html">http://ant.apache.org/antlibs/dotnet/</a></td> | |||
| </tr> | |||
| <tr> | |||
| <th>SVN URL:</th> | |||
| <td><a href="https://svn.apache.org/repos/asf/ant/antlibs/dotnet/trunk/">https://svn.apache.org/repos/asf/ant/antlibs/dotnet/trunk/</a></td> | |||
| </tr> | |||
| <tr> | |||
| <th>ViewSVN:</th> | |||
| <td><a href="http://svn.apache.org/viewcvs.cgi/ant/antlibs/dotnet/trunk/">http://svn.apache.org/viewcvs.cgi/ant/antlibs/dotnet/trunk/</a></td> | |||
| </tr> | |||
| <tr> | |||
| <th>Ant compatibility:</th> | |||
| <td>Ant 1.7.x<br/>A branch that works with Ant 1.6.2 and | |||
| above exists in <a href="https://svn.apache.org/repos/asf/ant/antlibs/dotnet/branches/Ant_1.6.2_compatible/">https://svn.apache.org/repos/asf/ant/antlibs/dotnet/branches/Ant_1.6.2_compatible/</a></td> | |||
| </tr> | |||
| <tr> | |||
| <th>Added to sandbox:</th> | |||
| <td>2005-04-15</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Promoted from sandbox:</th> | |||
| <td>2005-11-22</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Latest Release:</th> | |||
| <td>None</td> | |||
| </tr> | |||
| </table> | |||
| </subsection> | |||
| <a name="svn"/> | |||
| <subsection name="SVN - Subversion Support"> | |||
| <p>Contains tasks that correspond to Ant's <cvs>, | |||
| <cvschangelog> and <cvstagdiff> tasks. Requires | |||
| Subversion's command line client.</p> | |||
| <table> | |||
| <tr> | |||
| <th>Homepage:</th> | |||
| <td><a href="./svn/index.html">http://ant.apache.org/antlibs/svn/</a></td> | |||
| </tr> | |||
| <tr> | |||
| <th>SVN URL:</th> | |||
| <td><a href="https://svn.apache.org/repos/asf/ant/antlibs/svn/trunk/">https://svn.apache.org/repos/asf/ant/antlibs/svn/trunk/</a></td> | |||
| </tr> | |||
| <tr> | |||
| <th>ViewSVN:</th> | |||
| <td><a href="http://svn.apache.org/viewcvs.cgi/ant/antlibs/svn/trunk/">http://svn.apache.org/viewcvs.cgi/ant/antlibs/svn/trunk/</a></td> | |||
| </tr> | |||
| <tr> | |||
| <th>Ant compatibility:</th> | |||
| <td>Ant 1.7.x</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Added to sandbox:</th> | |||
| <td>2005-04-15</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Promoted from sandbox:</th> | |||
| <td>2005-11-22</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Latest Release:</th> | |||
| <td>None</td> | |||
| </tr> | |||
| </table> | |||
| </subsection> | |||
| </section> | |||
| @@ -1,6 +1,6 @@ | |||
| <?xml version="1.0"?> | |||
| <!-- | |||
| Copyright 2005 The Apache Software Foundation | |||
| Copyright 2005-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. | |||
| @@ -37,6 +37,9 @@ | |||
| <section name="Current Sandbox Ant Libraries"> | |||
| <p>There are no Ant libraries in the sandbox right now.</p> | |||
| <!-- example for copy/paste reuse ;-) | |||
| <subsection name="AntUnit - Unit Test Framework for Ant Tasks"> | |||
| <p>AntUnit borrows ideas from JUnit 3.x and the <junit> | |||
| @@ -46,77 +49,12 @@ | |||
| <table> | |||
| <tr> | |||
| <th>URL:</th> | |||
| <td>https://svn.apache.org/repos/asf/ant/sandbox/antlibs/antunit/trunk/</td> | |||
| </tr> | |||
| <tr> | |||
| <th>ViewSVN:</th> | |||
| <td>http://svn.apache.org/viewcvs.cgi/ant/sandbox/antlibs/antunit/trunk/</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Ant compatibility:</th> | |||
| <td>Ant 1.7.x</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Added to sandbox:</th> | |||
| <td>2005-04-15</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Sponsoring Committers</th> | |||
| <td>Stefan Bodewig</td> | |||
| </tr> | |||
| </table> | |||
| </subsection> | |||
| <subsection name="DotNet - Improved Support for .NET projects"> | |||
| <p>Provides a simple infrastructure to execute .NET | |||
| applications from within Ant for different VMs so that the | |||
| user doesn't have to change the build file when she wants to | |||
| run Mono on Linux and Microsoft's VM on Windows.</p> | |||
| <p>Also contains <nant>, <nunit> and untested | |||
| <msbuild> and <wix> tasks.</p> | |||
| <table> | |||
| <tr> | |||
| <th>URL:</th> | |||
| <td>https://svn.apache.org/repos/asf/ant/sandbox/antlibs/dotnet/trunk/</td> | |||
| </tr> | |||
| <tr> | |||
| <th>ViewSVN:</th> | |||
| <td>http://svn.apache.org/viewcvs.cgi/ant/sandbox/antlibs/dotnet/trunk/</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Ant compatibility:</th> | |||
| <td>Ant 1.7.x<br/>A branch that works with Ant 1.6.2 and | |||
| above exists in https://svn.apache.org/repos/asf/ant/sandbox/antlibs/dotnet/branches/Ant_1.6.2_compatible/</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Added to sandbox:</th> | |||
| <td>2005-04-15</td> | |||
| </tr> | |||
| <tr> | |||
| <th>Sponsoring Committers</th> | |||
| <td>Stefan Bodewig</td> | |||
| </tr> | |||
| </table> | |||
| </subsection> | |||
| <subsection name="SVN - Subversion Support"> | |||
| <p>Contains tasks that correspond to Ant's <cvs>, | |||
| <cvschangelog> and <cvstagdiff> tasks. Requires | |||
| Subversion's command line client.</p> | |||
| <table> | |||
| <tr> | |||
| <th>URL:</th> | |||
| <td>https://svn.apache.org/repos/asf/ant/sandbox/antlibs/svn/trunk/</td> | |||
| <th>SVN URL:</th> | |||
| <td><a href="https://svn.apache.org/repos/asf/ant/sandbox/antlibs/antunit/trunk/">https://svn.apache.org/repos/asf/ant/sandbox/antlibs/antunit/trunk/</a></td> | |||
| </tr> | |||
| <tr> | |||
| <th>ViewSVN:</th> | |||
| <td>http://svn.apache.org/viewcvs.cgi/ant/sandbox/antlibs/svn/trunk/</td> | |||
| <td><a href="http://svn.apache.org/viewcvs.cgi/ant/sandbox/antlibs/antunit/trunk/">http://svn.apache.org/viewcvs.cgi/ant/sandbox/antlibs/antunit/trunk/</a></td> | |||
| </tr> | |||
| <tr> | |||
| <th>Ant compatibility:</th> | |||
| @@ -132,7 +70,7 @@ | |||
| </tr> | |||
| </table> | |||
| </subsection> | |||
| --> | |||
| </section> | |||
| </body> | |||
| @@ -0,0 +1,69 @@ | |||
| <?xml version="1.0"?> | |||
| <!-- | |||
| 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. | |||
| --> | |||
| <document> | |||
| <properties> | |||
| <index value="1"/> | |||
| <title>Subversion Ant Library</title> | |||
| </properties> | |||
| <body> | |||
| <section name="Idea"> | |||
| <p>The main purpose of this Ant library is to provide the same | |||
| level of support that Ant provides for CVS. This means the | |||
| tasks are wrappers on top of the command line client (read: you | |||
| still need to install an svn client) and there is not much more | |||
| than running the executable and creating some reports.</p> | |||
| <p>If you are looking for projects that aim at more, there are | |||
| better alternatives, for example <a | |||
| href="http://subclipse.tigris.org/svnant.html">Subclipse's Ant | |||
| task</a> or <a | |||
| href="http://tmate.org/svn/ant.html">JavaSVN</a>.</p> | |||
| </section> | |||
| <section name="Tasks"> | |||
| <subsection name="svn"> | |||
| <p>A very thin layer on top of the command line executable, | |||
| comparable to <a | |||
| href="http://ant.apache.org/manual/CoreTasks/cvs.html">the CVS | |||
| task</a>.</p> | |||
| </subsection> | |||
| <subsection name="changelog"> | |||
| <p>Creates a log of change comments between two revisions, | |||
| comparable to <a | |||
| href="http://ant.apache.org/manual/CoreTasks/changelog.html">CvsChangeLog</a>.</p> | |||
| </subsection> | |||
| <subsection name="*diff"> | |||
| <p><code><tagdiff></code> creates a differences report | |||
| for the changes between two tags or branches.</p> | |||
| <p><code><revisiondiff></code> creates a differences report | |||
| for the changes between two revisions.</p> | |||
| <p>Together comparable to <a | |||
| href="http://ant.apache.org/manual/CoreTasks/cvstagdiff.html">CvsTagDiff</a>.</p> | |||
| </subsection> | |||
| </section> | |||
| <section name="Examples"> | |||
| </section> | |||
| </body> | |||
| </document> | |||