|
Wersja Polska
Możemy znaleźć tutaj kilka rozdziałów:
|
Apache Ant is a Java-based build tool. In theory, it is kind of like make, without make's wrinkles.
<project name="project_name" basedir="." default="default">
<target name="default">
<task1 param1="value" />
<task2>
<type param="value" />
</task2>
</target>
<target name="target2">
<task1 />
<task3 />
</target>
<target name="targetN">
</target>
</project>
<?xml version="1.0" encoding="iso-8859-2"?>
<project name="Project name" basedir="." default="resources">
<description>
Some description here..
</description>
<property name="build.dir" location=".." />
<property name="src.dir" location="src/" />
<target name="prepare">
<mkdir dir="${build.dir}" />
</target>
<target name="resources" depends="prepare">
<copy todir="${build.dir}" >
<fileset dir="${src.dir}">
<exclude
name="includes/**/*.swp" />
</fileset>
</copy>
</target>
</project>
Składnia używania zmiennych:
${variable},
i.e. <mkdir> dir="${build.dir}" />
build.dir=build/
dist.dir=dist/
archive.filename=archive.tgz
...
<property name="build.dir" location=".." />
<property name="src.dir" location="src/" />
<property name="archive.filename" value="archive.tgz" />
Hint!
Zadania: <DirSet>, <FileList>, <FileSet>,
<File Mappers>, <FilterChains> i <FilterReaders>,
<FilterSet>, <PatternSet>, <Selectors>,
<XMLCatalog> są zwane Core types
<!-- ... -->
<fileset dir="${server.src}" casesensitive ="yes" >
<include name="**/*.java"/>
<exclude name="**/*Test*"/>
</fileset>
<!-- ... -->
Jak widać, łatwo jest wybrać pliki wewnątrz naszej struktury katalogów. (zakładam, że istnieje jakaś ;-) )
Pierwszy przykład:
Zadanie <javac> kompiluje pliki źródłowe ze
wskazanych katalogów.
<target name="compile" depends="...">
<javac
destdir="${build.classes.dir}"
deprecation="on">
<include name="**/*.java" />
<src path="${src.main.dir}" />
<src path="${src.prevayler.dir}" />
<src path="${src.ant.dir}" />
</javac>
</target>
Drugi prosty przykład:
Tu pokażemy, użycie zadania: <copy>, które kopiuje pliki lub katalogi
pod wskazane miejsce.
<copy file="myfile.txt" todir="../some/other/dir"/>
Trzeci przykład:
<copy todir="../dest/dir" >
<fileset dir="src_dir" >
<exclude name="**/*.java"/>
</fileset>
</copy>
Istnieje także zadanie, które pozwala na uruchomienie testów Junit.
<junit>
<test name="my.test.TestCase" />
</junit>
Bardziej zaawansowany przykład:
<junit printsummary="yes" haltonfailure="yes">
<classpath>
<pathelement location="${build.tests}" />
<pathelement path="${java.class.path}" />
</classpath>
<formatter type="plain" />
<test name="my.test.TestCase" haltonfailure="no" outfile="result" >
<formatter type="xml" />
</test>
<batchtest fork="yes" todir="${reports.tests}">
<fileset dir="${src.tests}">
<include name="**/*Test*.java" />
<exclude name="**/AllTests.java" />
<!-- ... -->
Plik, który będziemy generowali, wygląda tak:
package nthx.some_project.tests;
import nthx.some_project.order.action.tests.UpdateWorkingDaysInWorkstandActionTest;
import nthx.some_project.order.action.tests.AddWorkingDaysToWorkstandActionTest;
/**
* many imports more..
* cut here
*/
import junit.framework.*;
public class MasterTest extends TestCase {
public static Test suite() {
TestSuite result = new TestSuite();
result.addTest(new TestSuite(StringUtilsTest.class));
result.addTest(new TestSuite(OrderTest.class));
/**
* 50 lines more..
* cut here
*/
result.addTest(new TestSuite(UpdateWorkersExperiencesBeanTest.class));
result.addTest(new TestSuite(InsertWorkerBeanTest.class));
return result;
}