Krótki przewodnik po Ant

ANT to skrót od Another Neat Tool. Jest to oparte na Javie narzędzie do budowania z Apache. Zanim przejdziemy do szczegółów Apache Ant, najpierw zrozumiemy, dlaczego potrzebujemy narzędzia do kompilacji.

Potrzebujesz narzędzia do budowania

Przeciętnie programista spędza znaczną ilość czasu na wykonywaniu przyziemnych zadań, takich jak kompilacja i wdrażanie, które obejmują:

  • Kompilowanie kodu
  • Pakowanie plików binarnych
  • Wdrażanie plików binarnych na serwerze testowym
  • Testowanie zmian
  • Kopiowanie kodu z jednej lokalizacji do drugiej

Aby zautomatyzować i uprościć powyższe zadania, przydatny jest Apache Ant. Jest to narzędzie do tworzenia i wdrażania systemu operacyjnego, które można uruchomić z wiersza poleceń.

Historia Apache Ant

  • Ant został stworzony przez Jamesa Duncana Davidsona (oryginalnego autora Tomcata).

  • Pierwotnie był używany do budowania Tomcata i był dołączany jako część dystrybucji Tomcat.

  • Ant narodził się z problemów i złożoności związanych z narzędziem Apache Make.

  • Ant był promowany jako niezależny projekt w Apache w roku 2000. Najnowsza wersja Apache Ant na maj 2014 to 1.9.4.

Funkcje Apache Ant

  • Ant to najbardziej kompletne dostępne narzędzie do tworzenia i wdrażania języka Java.

  • Ant jest niezależny od platformy i może obsługiwać właściwości platformy, takie jak separatory plików.

  • Ant może być używany do wykonywania zadań specyficznych dla platformy, takich jak modyfikowanie czasu modyfikacji pliku za pomocą polecenia „touch”.

  • Skrypty Ant są pisane przy użyciu zwykłego XML. Jeśli znasz już XML, możesz szybko nauczyć się Anta.

  • Ant jest dobry w automatyzacji skomplikowanych, powtarzalnych zadań.

  • Ant posiada dużą listę predefiniowanych zadań.

  • Ant zapewnia interfejs do tworzenia niestandardowych zadań.

  • Ant można łatwo wywołać z wiersza poleceń i można go zintegrować z darmowymi i komercyjnymi IDE.

Apache Ant Ant jest rozpowszechniany na licencji Apache Software License, pełnoprawnej licencji open source certyfikowanej przez inicjatywę open source.

Najnowszą wersję Apache Ant, w tym pełny kod źródłowy, pliki klas i dokumentację można znaleźć pod adresem http://ant.apache.org.

Instalowanie Apache Ant

Zakłada się, że już pobrałeś i zainstalowałeś Java Development Kit (JDK) na swoim komputerze. Jeśli nie, postępuj zgodnie z instrukcjami tutaj .

  • Upewnij się, że zmienna środowiskowa JAVA_HOME jest ustawiona na folder, w którym zainstalowano pakiet JDK.

  • Pobierz pliki binarne z http://ant.apache.org

  • Rozpakuj plik zip do wygodnej lokalizacji c: \ folder. używając Winzip, winRAR, 7-zip lub podobnych narzędzi.

  • Utwórz nową zmienną środowiskową o nazwie ANT_HOME w tym przypadku wskazuje to na folder instalacyjny Ant c:\apache-ant-1.8.2-bin teczka.

  • Dołącz ścieżkę do pliku wsadowego Apache Ant do zmiennej środowiskowej PATH. W naszym przypadku byłby to plikc:\apache-ant-1.8.2-bin\bin teczka.

Weryfikacja instalacji Apache Ant

Aby zweryfikować pomyślną instalację Apache Ant na komputerze, wpisz ant w wierszu poleceń.

Powinieneś zobaczyć wynik podobny do:

C:\>ant -version
Apache Ant(TM) version 1.8.2 compiled on December 20 2010

Jeśli nie widzisz powyższego wyniku, sprawdź, czy poprawnie wykonałeś wszystkie kroki instalacji.

Instalowanie Eclipse

Ten samouczek obejmuje również integrację Ant z Eclipse IDE. Dlatego jeśli jeszcze nie zainstalowałeś Eclipse, pobierz i zainstaluj Eclipse

Aby zainstalować Eclipse:

  • Pobierz najnowsze pliki binarne Eclipse ze strony www.eclipse.org

  • Rozpakuj pliki binarne Eclipse do dogodnej lokalizacji, na przykład c: \ folder

  • Uruchom Eclipse z c: \ eclipse \ eclipse.exe

Zwykle plik kompilacji Ant o nazwie build.xmlpowinien znajdować się w katalogu podstawowym projektu. Nie ma jednak żadnych ograniczeń dotyczących nazwy pliku ani jego lokalizacji. Możesz używać innych nazw plików lub zapisać plik kompilacji w innej lokalizacji.

W tym ćwiczeniu w dowolnym miejscu na komputerze utwórz plik o nazwie build.xml zawierający następującą zawartość:

<?xml version="1.0"?>
   <project name="Hello World Project" default="info">
   <target name="info">
      <echo>Hello World - Welcome to Apache Ant!</echo>
   </target>
</project>

Zwróć uwagę, że przed deklaracją xml nie powinno być pustych linii ani białych znaków. Jeśli na to zezwolisz, podczas wykonywania kompilacji Ant pojawi się następujący komunikat o błędzie -

Dopasowanie celu instrukcji przetwarzania do „[xX] [mM] [lL]” jest niedozwolone. Wszystkie pliki kompilacji wymagają rozszerzeniaproject element i co najmniej jeden target element.

Element XML project ma trzy atrybuty:

Atrybuty Opis
Nazwa Nazwa projektu. (Opcjonalny)
domyślna Domyślny cel skryptu kompilacji. Projekt może zawierać dowolną liczbę celów. Ten atrybut określa, który cel powinien być traktowany jako domyślny. (Obowiązkowy)
basedir Katalog podstawowy (lub) folder główny projektu. (Opcjonalny)

Cel to zbiór zadań, które chcesz wykonywać jako jedną jednostkę. W naszym przykładzie mamy prosty cel dostarczania wiadomości informacyjnej do użytkownika.

Cele mogą mieć zależności od innych celów. Na przykład plikdeploy element docelowy może mieć zależność od package target, plik package element docelowy może mieć zależność od compilecel i tak dalej. Zależności są oznaczane przy użyciudependsatrybut. Na przykład:

<target name="deploy" depends="package">
  ....
</target>
<target name="package" depends="clean,compile">
  ....
</target>
<target name="clean" >
  ....
</target>
<target name="compile" >
  ....
</target>

Element docelowy ma następujące atrybuty:

Atrybuty Opis
Nazwa Nazwa celu (wymagane)
zależy Rozdzielana przecinkami lista wszystkich celów, od których zależy ten cel. (Opcjonalny)
opis Krótki opis celu. (opcjonalny)
gdyby Umożliwia wykonanie celu na podstawie poprawności atrybutu warunkowego. (opcjonalny)
chyba że Dodaje cel do listy zależności określonego punktu rozszerzenia. Punkt rozszerzenia jest podobny do celu, ale nie ma żadnych zadań. (Opcjonalny)

Plik echozadanie w powyższym przykładzie jest trywialnym zadaniem, które drukuje wiadomość. W naszym przykładzie wypisuje wiadomość Hello World .

Aby uruchomić plik build.xml, otwórz wiersz poleceń i przejdź do folderu, w którym znajduje się plik build.xml, i wpisz ant info. Możesz też wpisaćantzamiast. Oba będą działać, ponieważinfojest domyślnym celem w pliku kompilacji. Powinieneś zobaczyć następujące dane wyjściowe:

C:\>ant
Buildfile: C:\build.xml

info: [echo] Hello World - Welcome to Apache Ant!

BUILD SUCCESSFUL
Total time: 0 seconds

C:\>

Pliki kompilacji Ant są napisane w XML, co nie pozwala na deklarowanie zmiennych tak, jak robisz to w Twoim ulubionym języku programowania. Jednak, jak można sobie wyobrazić, byłoby przydatne, gdyby Ant zezwolił na deklarowanie zmiennych, takich jak nazwa projektu, katalog źródłowy projektu itp.

Ant używa propertyelement umożliwiający określenie właściwości. Umożliwia to zmianę właściwości z jednej kompilacji na inną lub z jednego środowiska do innego.

Domyślnie Ant udostępnia następujące wstępnie zdefiniowane właściwości, których można używać w pliku kompilacji:

Nieruchomości Opis
ant.file Pełna lokalizacja pliku kompilacji.
wersja ant Wersja instalacji Apache Ant.
basedir Bazującyir kompilacji, jak określono w basedir atrybut klasy project element.
ant.java.version Wersja JDK używana przez Ant.
ant.project.name Nazwa projektu, jak określono w name atrybuty project element.
ant.project.default-target Domyślny cel bieżącego projektu.
ant.project.invoked-target Rozdzielana przecinkami lista celów, które zostały wywołane w bieżącym projekcie.
ant.core.lib Pełna lokalizacja pliku jar Ant.
ant.home Katalog domowy instalacji Ant.
ant.library.dir Katalog domowy dla plików biblioteki Ant - zwykle folder ANT_HOME / lib.

Ant udostępnia również właściwości systemu (przykład: plik.separator) dla pliku kompilacji.

Oprócz powyższego użytkownik może zdefiniować dodatkowe właściwości za pomocą propertyelement. Poniższy przykład pokazuje, jak zdefiniować właściwość o nazwiesitename:

<?xml version="1.0"?>
<project name="Hello World Project" default="info">
   <property name="sitename" value="www.tutorialspoint.com"/>
   <target name="info">
      <echo>Apache Ant version is ${ant.version} - You are at ${sitename} </echo>
   </target>
</project>

Uruchomienie Ant na powyższym pliku kompilacji daje następujące dane wyjściowe:

C:\>ant
Buildfile: C:\build.xml

info: [echo] Apache Ant version is Apache Ant(TM) version 1.8.2  
      compiled on December 20 2010 - You are at www.tutorialspoint.com

BUILD SUCCESSFUL
Total time: 0 seconds
C:\>

Ustawienie właściwości bezpośrednio w pliku kompilacji jest w porządku, jeśli pracujesz z kilkoma właściwościami. Jednak w przypadku dużego projektu sensowne jest przechowywanie właściwości w oddzielnym pliku właściwości.

Przechowywanie właściwości w oddzielnym pliku zapewnia następujące korzyści:

  • Umożliwia ponowne użycie tego samego pliku kompilacji z różnymi ustawieniami właściwości dla różnych środowisk wykonawczych. Na przykład plik właściwości kompilacji może być obsługiwany oddzielnie dla środowisk DEV, TEST i PROD.

  • Jest to przydatne, gdy nie znasz wartości właściwości (w określonym środowisku) z góry. Pozwala to na wykonanie kompilacji w innych środowiskach, w których znana jest wartość właściwości.

Nie ma sztywnej i szybkiej reguły, ale zazwyczaj plik właściwości ma nazwę build.properties i jest umieszczony obok build.xmlplik. Można utworzyć wiele plików właściwości kompilacji w oparciu o środowiska wdrażania - takie jakbuild.properties.dev i build.properties.test.

Zawartość pliku właściwości kompilacji jest podobna do normalnego pliku właściwości Java. Zawierają po jednej właściwości w każdym wierszu. Każda właściwość jest reprezentowana przez nazwę i parę wartości. Pary nazwa i wartość są oddzielone znakiem równości (=). Zdecydowanie zaleca się, aby właściwości były opatrzone odpowiednimi komentarzami. Komentarze są wymienione przy użyciu znaku krzyżyka (#).

Poniższy przykład przedstawia plik build.xml plik i skojarzony z nim plik build.properties plik:

build.xml

<?xml version="1.0"?>
<project name="Hello World Project" default="info">
   <property file="build.properties"/>
      <target name="info">
         <echo>Apache Ant version is ${ant.version} - You are at ${sitename} </echo>
      </target>
</project>

build.properties

# The Site Name
sitename=www.tutorialspoint.com
buildversion=3.3.2

W powyższym przykładzie sitenameto właściwość niestandardowa, która jest mapowana na nazwę witryny internetowej. W ten sposób możesz zadeklarować dowolną liczbę właściwości niestandardowych. Inną niestandardową właściwością wymienioną w powyższym przykładzie jestbuildversion, co w tym przypadku odnosi się do wersji pliku build.

Oprócz powyższego, Ant oferuje szereg predefiniowanych właściwości kompilacji, które zostały wymienione w poprzedniej sekcji, ale są ponownie przedstawione poniżej.

Nieruchomości Opis
ant.file Pełna lokalizacja pliku kompilacji.
wersja ant Wersja instalacji Apache Ant.
basedir Bazującyir kompilacji, jak określono w basedir atrybut klasy project element.
ant.java.version Wersja JDK używana przez Ant.
ant.project.name Nazwa projektu, jak określono w name atrybuty project element.
ant.project.default-target Domyślny cel bieżącego projektu.
ant.project.invoked-target Rozdzielana przecinkami lista celów, które zostały wywołane w bieżącym projekcie.
ant.core.lib Pełna lokalizacja pliku jar Ant.
ant.home Katalog domowy instalacji Ant.
ant.library.dir Katalog domowy dla plików biblioteki Ant - zwykle folder ANT_HOME / lib.

W przykładzie przedstawionym w tym rozdziale zastosowano rozszerzenie ant.version wbudowana nieruchomość.

Ant zapewnia szereg predefiniowanych typów danych. Nie należy mylić terminu „typy danych” z tymi, które są dostępne w języku programowania, zamiast tego należy traktować je jako zestaw usług już wbudowanych w produkt.

Następujące typy danych są dostarczane przez Apache Ant.

Zestaw plików

Typy danych zestawu plików reprezentują zbiór plików. Służy jako filtr do włączania lub wykluczania plików pasujących do określonego wzorca.

Na przykład odwołaj się do następującego kodu. Tutaj atrybut src wskazuje na folder źródłowy projektu.

Zestaw plików wybiera wszystkie pliki .java w folderze źródłowym, z wyjątkiem tych, które zawierają słowo „Stub”. Do zestawu plików stosowany jest filtr uwzględniający wielkość liter, co oznacza, że ​​plik o nazwie Samplestub.java nie zostanie wykluczony z zestawu plików.

<fileset dir="${src}" casesensitive="yes">
   <include name="**/*.java"/>
   <exclude name="**/*Stub*"/>
</fileset>

Zestaw wzorów

Zestaw wzorców to wzorzec, który umożliwia łatwe filtrowanie plików lub folderów na podstawie określonych wzorców. Wzory można tworzyć za pomocą następujących metaznaków:

  • ? - Dopasowuje tylko jeden znak.

  • * - Dopasowuje zero lub wiele znaków.

  • ** - Dopasowuje rekursywnie zero lub wiele katalogów.

Poniższy przykład przedstawia użycie zestawu wzorców.

<patternset id="java.files.without.stubs">
   <include name="src/**/*.java"/>
   <exclude name="src/**/*Stub*"/>
</patternset>

Zestaw wzorców można następnie ponownie wykorzystać z zestawem plików w następujący sposób:

<fileset dir="${src}" casesensitive="yes">
   <patternset refid="java.files.without.stubs"/>
</fileset>

Lista plików

Typ danych filelist jest podobny do zestawu plików, z wyjątkiem następujących różnic:

  • filelist zawiera jawnie nazwane listy plików i nie obsługuje symboli wieloznacznych.

  • Typ danych filelist można zastosować do istniejących lub nieistniejących plików.

Zobaczmy następujący przykład typu danych filelist. Tutaj atrybutwebapp.src.folder wskazuje na folder źródłowy aplikacji sieci Web projektu.

<filelist id="config.files" dir="${webapp.src.folder}">
   <file name="applicationConfig.xml"/>
   <file name="faces-config.xml"/>
   <file name="web.xml"/>
   <file name="portlet.xml"/>
</filelist>

Zestaw filtrów

Używając typu danych zestawu filtrów wraz z zadaniem kopiowania, możesz zastąpić określony tekst we wszystkich plikach, które pasują do wzorca, wartością zastępczą.

Typowym przykładem jest dołączenie numeru wersji do pliku informacji o wersji, jak pokazano w poniższym kodzie.

<copy todir="${output.dir}">
   <fileset dir="${releasenotes.dir}" includes="**/*.txt"/> <filterset> <filter token="VERSION" value="${current.version}"/>
   </filterset>
</copy>

W tym kodzie:

  • Atrybut output.dir wskazuje na folder wyjściowy projektu.

  • Atrybut releasenotes.dir wskazuje na folder uwag do wydania projektu.

  • Atrybut current.version wskazuje folder aktualnej wersji projektu.

  • Zadanie kopiowania, jak sama nazwa wskazuje, służy do kopiowania plików z jednej lokalizacji do drugiej.

Ścieżka

Plik pathtyp danych jest powszechnie używany do reprezentowania ścieżki klasy. Wpisy na ścieżce są oddzielane średnikami lub dwukropkami. Jednak te znaki są zastępowane w czasie wykonywania przez znak separatora ścieżki systemu wykonawczego.

Ścieżka klas jest ustawiona na listę plików jar i klas w projekcie, jak pokazano w poniższym przykładzie.

<path id="build.classpath.jar">
   <pathelement path="${env.J2EE_HOME}/${j2ee.jar}"/>
   <fileset dir="lib">
      <include name="**/*.jar"/>
   </fileset>
</path>

W tym kodzie:

  • Atrybut env.J2EE_HOME wskazuje na zmienną środowiskową J2EE_HOME.

  • Atrybut j2ee.jar wskazuje na nazwę pliku jar J2EE w folderze podstawowym J2EE.

Teraz, gdy poznaliśmy typy danych w Ant, nadszedł czas, aby wprowadzić tę wiedzę w życie. W tym rozdziale zbudujemy projekt. Celem tego rozdziału jest zbudowanie pliku Ant, który kompiluje klasy java i umieszcza je w folderze WEB-INF \ classes.

Rozważ następującą strukturę projektu:

  • Skrypty bazy danych są przechowywane w pliku db teczka.

  • Kod źródłowy Java jest przechowywany w pliku src teczka.

  • Obrazy, js, META-INF, style (css) są przechowywane w pliku war teczka.

  • Strony JSP są przechowywane w pliku jsp teczka.

  • Pliki JAR innych firm są przechowywane w lib teczka.

  • Pliki klas java są przechowywane w WEB-INF\classes teczka.

Ten projekt tworzy Hello World Aplikacja faksowa w pozostałej części tego samouczka.

C:\work\FaxWebApplication>tree
Folder PATH listing
Volume serial number is 00740061 EC1C:ADB1
C:.
+---db
+---src
.  +---faxapp
.  +---dao
.  +---entity
.  +---util
.  +---web
+---war
   +---images
   +---js
   +---META-INF
   +---styles
   +---WEB-INF
      +---classes
      +---jsp
      +---lib

Oto plik build.xml wymagany dla tego projektu. Rozważmy to kawałek po kawałku.

<?xml version="1.0"?>
<project name="fax" basedir="." default="build">
   <property name="src.dir" value="src"/>
   <property name="web.dir" value="war"/>
   <property name="build.dir" value="${web.dir}/WEB-INF/classes"/> <property name="name" value="fax"/> <path id="master-classpath"> <fileset dir="${web.dir}/WEB-INF/lib">
         <include name="*.jar"/>
      </fileset>
      <pathelement path="${build.dir}"/> </path> <target name="build" description="Compile source tree java files"> <mkdir dir="${build.dir}"/>
      <javac destdir="${build.dir}" source="1.5" target="1.5"> <src path="${src.dir}"/>
         <classpath refid="master-classpath"/>
      </javac>
   </target>
 
   <target name="clean" description="Clean output directories">
      <delete>
         <fileset dir="${build.dir}">
            <include name="**/*.class"/>
         </fileset>
      </delete>
   </target>
</project>

Najpierw zadeklarujmy niektóre właściwości dla folderów źródłowych, internetowych i kompilacji.

<property name="src.dir" value="src"/>
<property name="web.dir" value="war"/>
<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>

W tym przykładzie:

  • src.dir odnosi się do folderu źródłowego projektu, w którym można znaleźć pliki źródłowe Java.

  • web.dir odnosi się do folderu źródłowego sieci WWW projektu, w którym można znaleźć strony JSP, web.xml, css, javascript i inne pliki związane z siecią

  • build.dir odnosi się do folderu wyjściowego kompilacji projektu.

Właściwości mogą odnosić się do innych właściwości. Jak pokazano w powyższym przykładzie, plikbuild.dir właściwość odwołuje się do web.dir własność.

W tym przykładzie src.dir odnosi się do folderu źródłowego projektu.

Domyślnym celem naszego projektu jest compilecel. Ale najpierw spójrzmy na plikclean cel.

Czysty cel, jak sugeruje nazwa, usuwa pliki w folderze kompilacji.

<target name="clean" description="Clean output directories">
   <delete>
      <fileset dir="${build.dir}">
         <include name="**/*.class"/>
      </fileset>
   </delete>
</target>

Główna-ścieżka klas zawiera informacje o ścieżce klas. W tym przypadku obejmuje klasy w folderze kompilacji i pliki jar w folderze lib.

<path id="master-classpath">
   <fileset dir="${web.dir}/WEB-INF/lib">
      <include name="*.jar"/>
   </fileset>
   <pathelement path="${build.dir}"/>
</path>

Na koniec cel kompilacji do kompilowania plików. Przede wszystkim tworzymy katalog budowania, jeśli nie istnieje. Następnie wykonujemy polecenie javac (określając jdk1.5 jako naszą docelową kompilację). Dostarczamy folder źródłowy i ścieżkę klasy do zadania javac i prosimy o upuszczenie plików klas w folderze kompilacji.

<target name="build" description="Compile main source tree java files">
   <mkdir dir="${build.dir}"/>
   <javac destdir="${build.dir}" source="1.5" target="1.5" debug="true" deprecation="false" optimize="false" failonerror="true"> <src path="${src.dir}"/>
      <classpath refid="master-classpath"/>
   </javac>
</target>

Wykonanie programu Ant na tym pliku kompiluje pliki źródłowe Java i umieszcza klasy w folderze kompilacji.

Poniższy wynik jest wynikiem działania pliku Ant:

C:\>ant
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 6.3 seconds

Pliki są kompilowane i umieszczane w build.dir teczka.

Dokumentacja jest niezbędna w każdym projekcie. Dokumentacja odgrywa wielką rolę w utrzymaniu projektu. Java ułatwia dokumentację dzięki wykorzystaniu wbudowanegojavadocnarzędzie. Ant czyni to jeszcze prostszym, generując dokumentację na żądanie.

Jak wiadomo, narzędzie javadoc jest bardzo elastyczne i udostępnia wiele opcji konfiguracyjnych. Ant ujawnia te opcje konfiguracyjne za pomocą zadania javadoc. Jeśli nie znasz języka javadocs, zalecamy rozpoczęcie od tego samouczka dokumentacji Java .

W poniższej sekcji wymieniono najczęściej używane opcje javadoc używane w programie Ant.

Atrybuty

Źródło można określić za pomocą sourcepath, sourcepathref lub sourcefiles.

  • sourcepath służy do wskazywania folderu plików źródłowych (np. folder src).

  • sourcepathref służy do wskazywania ścieżki, do której odwołuje się atrybut ścieżki (np. delegates.src.dir).

  • sourcefiles jest używany, gdy chcesz określić poszczególne pliki jako listę oddzieloną przecinkami.

Ścieżka docelowa jest określana przy użyciu destdir folder (np. build.dir).

Możesz filtrować javadoczadanie, określając nazwy pakietów, które mają zostać uwzględnione. Osiąga się to za pomocąpackagenames atrybut, lista plików pakietu oddzielona przecinkami.

Można przefiltrować proces javadoc, aby wyświetlić tylko klasy i elementy publiczne, prywatne, pakietowe lub chronione. Osiąga się to za pomocąprivate, public, package i protected atrybuty.

Możesz również powiedzieć zadaniu javadoc, aby zawierało informacje o autorze i wersji przy użyciu odpowiednich atrybutów.

Możesz również zgrupować pakiety razem przy użyciu rozszerzenia group atrybut, aby nawigacja stała się łatwa.

Kładąc wszystko razem

Kontynuujmy nasz temat Hello worldAplikacja faksowa. Dodajmy docelową dokumentację do naszego projektu aplikacji faksowej.

Poniżej podano przykładowe zadanie javadoc użyte w naszym projekcie. W tym przykładzie określiliśmy javadoc do używaniasrc.dir jako katalog źródłowy i doc jako cel.

Dostosowaliśmy również tytuł okna, nagłówek i stopkę, które pojawiają się na stronach dokumentacji Java.

Stworzyliśmy również trzy grupy:

  • jeden dla klas narzędzi w naszym folderze źródłowym,
  • jeden dla klas interfejsów użytkownika i
  • jeden dla klas związanych z bazą danych.

Możesz zauważyć, że grupa pakietów danych ma dwa pakiety -– faxapp.entity i faxapp.dao.

<target name="generate-javadoc">
   <javadoc packagenames="faxapp.*" sourcepath="${src.dir}" 
      destdir="doc" version="true" windowtitle="Fax Application">
      <doctitle><![CDATA[= Fax Application =]]></doctitle>
      <bottom>
         <![CDATA[Copyright © 2011. All Rights Reserved.]]>
      </bottom>
      <group title="util packages" packages="faxapp.util.*"/>
      <group title="web packages" packages="faxapp.web.*"/>
      <group title="data packages" 
         packages="faxapp.entity.*:faxapp.dao.*"/>
   </javadoc>
   <echo message="java doc has been generated!" />
</target>

Wykonajmy zadanie Ant javadoc. Generuje i umieszcza pliki dokumentacji Java w folderze doc.

Kiedy javadoc target jest wykonywany, daje następujący wynik:

C:\>ant generate-javadoc
Buildfile: C:\build.xml

java doc has been generated!

BUILD SUCCESSFUL
Total time: 10.63 second

Pliki dokumentacji Java są teraz obecne w doc teczka.

Zazwyczaj pliki javadoc są generowane jako część docelowych wersji lub pakietu.

Następnym logicznym krokiem po skompilowaniu plików źródłowych java jest zbudowanie archiwum java, czyli pliku JAR. Tworzenie plików JAR za pomocą Ant jest dość łatwe dziękijarzadanie. Powszechnie używane atrybuty zadania jar są następujące:

Atrybuty Opis
basedir Katalog podstawowy dla wyjściowego pliku JAR. Domyślnie jest to katalog podstawowy projektu.
Kompresja Zaleca programowi Ant skompresowanie pliku podczas tworzenia pliku JAR.
keepcompression Podczas, gdy compress atrybut ma zastosowanie do poszczególnych plików, rozszerzenie keepcompression atrybut robi to samo, ale dotyczy całego archiwum.
destfile Nazwa wyjściowego pliku JAR.
duplikować Doradza Antowi, co zrobić w przypadku znalezienia duplikatów plików. Możesz dodać, zachować lub nie zduplikowane pliki.
wyklucza Radzi Ant, aby nie dołączał listy plików oddzielonych przecinkami do pakietu.
wykluczaplik Tak samo jak powyżej, z tą różnicą, że pliki wykluczeń są określane za pomocą wzorca.
zawiera Odwrotność wykluczeń.
zawiera plik Odwrotność excludesfile.
aktualizacja Radzi Antowi nadpisanie plików w już zbudowanym pliku JAR.

Kontynuując nasze Hello WorldProjekt aplikacji faksowej, dodajmy nowy cel do tworzenia plików jar. Ale przedtem rozważmy zadanie słoika podane poniżej.

<jar destfile="${web.dir}/lib/util.jar"
   basedir="${build.dir}/classes"
   includes="faxapp/util/**"
   excludes="**/Test.class"
/>

Tutaj web.dirwłaściwość wskazuje na ścieżkę do plików źródłowych sieci WWW. W naszym przypadku w tym miejscu zostanie umieszczony plik util.jar.

Plik build.dir w tym przykładzie wskazuje na folder kompilacji, w którym można znaleźć pliki klas pliku util.jar.

W tym przykładzie tworzymy plik jar o nazwie util.jar używając klas z faxapp.util.*pakiet. Jednak wykluczamy klasy, które kończą się nazwą Test. Plik wyjściowy jar zostanie umieszczony w folderze lib aplikacji internetowej.

Jeśli chcemy, aby plik util.jar był wykonywalnym plikiem jar, musimy dodać rozszerzenie manifest z Main-Class atrybut meta.

Dlatego powyższy przykład zostanie zaktualizowany jako:

<jar destfile="${web.dir}/lib/util.jar"
   basedir="${build.dir}/classes"
   includes="faxapp/util/**"
   excludes="**/Test.class">
   <manifest>
      <attribute name="Main-Class" value="com.tutorialspoint.util.FaxUtil"/>
   </manifest>
</jar>

Aby wykonać zadanie jar, należy umieścić je w celu, najczęściej w celu kompilacji lub pakietu, i wykonać je.

<target name="build-jar">
<jar destfile="${web.dir}/lib/util.jar"
   basedir="${build.dir}/classes"
   includes="faxapp/util/**"
   excludes="**/Test.class">
   <manifest>
      <attribute name="Main-Class" value="com.tutorialspoint.util.FaxUtil"/>
   </manifest>
</jar>
</target>

Uruchomienie Ant na tym pliku tworzy dla nas plik util.jar.

Poniższy wynik jest wynikiem działania pliku Ant:

C:\>ant build-jar
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 1.3 seconds

Plik util.jar jest teraz umieszczony w folderze wyjściowym.

Tworzenie plików WAR za pomocą Ant jest niezwykle proste i bardzo podobne do zadania tworzenia plików JAR. W końcu plik WAR, podobnie jak plik JAR, jest po prostu kolejnym plikiem ZIP.

Zadanie WAR jest rozszerzeniem zadania JAR, ale ma kilka fajnych dodatków do manipulowania tym, co trafia do folderu WEB-INF / classes i generowania pliku web.xml. Zadanie WAR jest przydatne do określenia konkretnego układu pliku WAR.

Ponieważ zadanie WAR jest rozszerzeniem zadania JAR, wszystkie atrybuty zadania JAR mają zastosowanie do zadania WAR.

Atrybuty Opis
webxml Ścieżka do pliku web.xml
lib Grupowanie określające, co trafia do folderu WEB-INF \ lib.
zajęcia Grupowanie określające, co trafia do folderu WEB-INF \ classes.
metainf Określa instrukcje dotyczące generowania pliku MANIFEST.MF.

Kontynuując nasze Hello WorldProjekt aplikacji faksowej, dodajmy nowy cel do tworzenia plików jar. Ale zanim to nastąpi, rozważmy zadanie wojenne. Rozważmy następujący przykład:

<war destfile="fax.war" webxml="${web.dir}/web.xml">
   <fileset dir="${web.dir}/WebContent"> <include name="**/*.*"/> </fileset> <lib dir="thirdpartyjars"> <exclude name="portlet.jar"/> </lib> <classes dir="${build.dir}/web"/>
</war>

Jak w poprzednich przykładach, plik web.dir zmienna odnosi się do źródłowego folderu WWW, tj. folderu zawierającego pliki JSP, css, javascript itp.

Plik build.dirzmienna odnosi się do folderu wyjściowego - tutaj można znaleźć klasy pakietu WAR. Zazwyczaj klasy zostaną umieszczone w folderze WEB-INF / classes pliku WAR.

W tym przykładzie tworzymy plik wojenny o nazwie fax.war. Plik WEB.XML jest pobierany z folderu źródłowego sieci WWW. Wszystkie pliki z folderu „WebContent” w sieci WWW są kopiowane do pliku WAR.

Folder WEB-INF / lib jest zapełniany plikami jar z folderu thirdpartyjars. Jednak wykluczamy plik portlet.jar, ponieważ znajduje się on już w folderze lib serwera aplikacji. Na koniec kopiujemy wszystkie klasy z folderu internetowego katalogu kompilacji i umieszczamy w folderze WEB-INF / classes.

Umieść zadanie wojenne w celu Ant (zwykle w pakiecie) i uruchom je. Spowoduje to utworzenie pliku WAR w określonej lokalizacji.

Jest całkowicie możliwe zagnieżdżenie klas, lib, metainf i dyrektorów webinf, tak aby znajdowały się w rozproszonych folderach w dowolnym miejscu struktury projektu. Jednak najlepsze praktyki sugerują, że projekt sieci Web powinien mieć strukturę treści WWW podobną do struktury pliku WAR. Projekt aplikacji faksowej ma strukturę opisaną przy użyciu tej podstawowej zasady.

Aby wykonać zadanie wojenne, umieść je w celu, najczęściej w celu kompilacji lub pakietu, i uruchom je.

<target name="build-war">
   <war destfile="fax.war" webxml="${web.dir}/web.xml"> <fileset dir="${web.dir}/WebContent">
      <include name="**/*.*"/>
   </fileset>
   <lib dir="thirdpartyjars">
      <exclude name="portlet.jar"/>
   </lib>
   <classes dir="${build.dir}/web"/>
   </war>
</target>

Uruchomienie Ant na tym pliku spowoduje utworzenie fax.war plik dla nas.

Poniższy wynik jest wynikiem działania pliku Ant:

C:\>ant build-war
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 12.3 seconds

Plik fax.war zostanie umieszczony w folderze wyjściowym. Zawartość akt wojennych będzie następująca:

fax.war:
   +---jsp             This folder contains the jsp files
   +---css             This folder contains the stylesheet files
   +---js              This folder contains the javascript files
   +---images          This folder contains the image files
   +---META-INF        This folder contains the Manifest.Mf
   +---WEB-INF
      +---classes   This folder contains the compiled classes
      +---lib       Third party libraries and the utility jar files
      WEB.xml       Configuration file that defines the WAR package

Poznaliśmy różne aspekty Ant przy użyciu Hello World Aplikacja internetowa do faksowania w kawałkach.

Teraz nadszedł czas, aby zebrać wszystko razem, aby utworzyć pełny i kompletny plik build.xml. Rozważaćbuild.properties i build.xml pliki w następujący sposób:

build.properties

deploy.path=c:\tomcat6\webapps

build.xml

<?xml version="1.0"?>

<project name="fax" basedir="." default="usage">
   <property file="build.properties"/>
   <property name="src.dir" value="src"/>
   <property name="web.dir" value="war"/>
   <property name="javadoc.dir" value="doc"/>
   <property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
   <property name="name" value="fax"/>

   <path id="master-classpath">
      <fileset dir="${web.dir}/WEB-INF/lib"> <include name="*.jar"/> </fileset> <pathelement path="${build.dir}"/>
   </path>
    
   <target name="javadoc">
      <javadoc packagenames="faxapp.*" sourcepath="${src.dir}" destdir="doc" version="true" windowtitle="Fax Application"> <doctitle><![CDATA[<h1>= Fax Application =</h1>]]> </doctitle> <bottom><![CDATA[Copyright © 2011. All Rights Reserved.]]> </bottom> <group title="util packages" packages="faxapp.util.*"/> <group title="web packages" packages="faxapp.web.*"/> <group title="data packages" packages="faxapp.entity.*:faxapp.dao.*"/> </javadoc> </target> <target name="usage"> <echo message=""/> <echo message="${name} build file"/>
      <echo message="-----------------------------------"/>
      <echo message=""/>
      <echo message="Available targets are:"/>
      <echo message=""/>
      <echo message="deploy    --> Deploy application as directory"/>
      <echo message="deploywar --> Deploy application as a WAR file"/>
      <echo message=""/>
   </target>

   <target name="build" description="Compile main 
      source tree java files">
   <mkdir dir="${build.dir}"/> <javac destdir="${build.dir}" source="1.5" 
         target="1.5" debug="true"
         deprecation="false" optimize="false" failonerror="true">
      <src path="${src.dir}"/> <classpath refid="master-classpath"/> </javac> </target> <target name="deploy" depends="build" description="Deploy application"> <copy todir="${deploy.path}/${name}" preservelastmodified="true"> <fileset dir="${web.dir}">
         <include name="**/*.*"/>
      </fileset>
   </copy>
   </target>

   <target name="deploywar" depends="build" 
      description="Deploy application as a WAR file">
      <war destfile="${name}.war" webxml="${web.dir}/WEB-INF/web.xml">
         <fileset dir="${web.dir}"> <include name="**/*.*"/> </fileset> </war> <copy todir="${deploy.path}" preservelastmodified="true">
         <fileset dir=".">
            <include name="*.war"/>
         </fileset>
      </copy>
   </target>
    

   <target name="clean" description="Clean output directories">
      <delete>
         <fileset dir="${build.dir}">
            <include name="**/*.class"/>
         </fileset>
      </delete>
   </target>
</project>

W tym przykładzie:

  • Najpierw deklarujemy ścieżkę do folderu webapps w Tomcat w pliku właściwości kompilacji jako plik deploy.path zmienna.

  • Deklarujemy również folder źródłowy plików java w formacie src.dir zmienna.

  • Następnie deklarujemy folder źródłowy plików internetowych w formacie web.dir zmienna. javadoc.dir to folder do przechowywania dokumentacji java, a build.dir jest ścieżką do przechowywania plików wyjściowych kompilacji.

  • Następnie deklarujemy nazwę aplikacji internetowej, czyli fax w naszym przypadku.

  • Definiujemy również ścieżkę klasy głównej, która zawiera pliki JAR obecne w folderze WEB-INF / lib projektu.

  • Dołączamy również pliki klas obecne w build.dir w ścieżce klasy mistrzowskiej.

  • Element docelowy Javadoc tworzy element javadoc wymagany dla projektu, a cel użycia służy do drukowania typowych elementów docelowych, które są obecne w pliku kompilacji.

Powyższy przykład przedstawia dwa cele wdrożenia: deploy i deploywar.

Cel wdrażania kopiuje pliki z katalogu WWW do katalogu wdrażania, zachowując sygnaturę czasową ostatniej modyfikacji. Jest to przydatne podczas wdrażania na serwerze obsługującym wdrażanie na gorąco.

Czysty cel czyści wszystkie wcześniej zbudowane pliki.

Miejsce docelowe wojny wojennej buduje plik wojny, a następnie kopiuje plik wojny do katalogu wdrażania na serwerze aplikacji.

W poprzednim rozdziale dowiedzieliśmy się, jak spakować aplikację i wdrożyć ją w folderze.

W tym rozdziale zamierzamy wdrożyć aplikację internetową bezpośrednio do folderu wdrażania serwera aplikacji, a następnie dodamy kilka celów Ant, aby uruchamiać i zatrzymywać usługi. KontynuujmyHello Worldaplikacja internetowa do faksowania. Jest to kontynuacja poprzedniego rozdziału, nowe elementy wyróżniono pogrubioną czcionką.

build.properties

# Ant properties for building the springapp

appserver.home=c:\\install\\apache-tomcat-7.0.19
# for Tomcat 5 use $appserver.home}/server/lib
# for Tomcat 6 use $appserver.home}/lib appserver.lib=${appserver.home}/lib

deploy.path=${appserver.home}/webapps

tomcat.manager.url=http://www.tutorialspoint.com:8080/manager
tomcat.manager.username=tutorialspoint
tomcat.manager.password=secret

build.xml

<?xml version="1.0"?>

<project name="fax" basedir="." default="usage">
   <property file="build.properties"/>
   <property name="src.dir" value="src"/>
   <property name="web.dir" value="war"/>
   <property name="javadoc.dir" value="doc"/>
   <property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
   <property name="name" value="fax"/>

   <path id="master-classpath">
      <fileset dir="${web.dir}/WEB-INF/lib"> <include name="*.jar"/> </fileset> <pathelement path="${build.dir}"/>
   </path>
    
   <target name="javadoc">
   <javadoc packagenames="faxapp.*" sourcepath="${src.dir}" destdir="doc" version="true" windowtitle="Fax Application"> <doctitle><![CDATA[<h1>= Fax Application =</h1>]]></doctitle> <bottom><![CDATA[Copyright © 2011. All Rights Reserved.]]></bottom> <group title="util packages" packages="faxapp.util.*"/> <group title="web packages" packages="faxapp.web.*"/> <group title="data packages" packages="faxapp.entity.*:faxapp.dao.*"/> </javadoc> </target> <target name="usage"> <echo message=""/> <echo message="${name} build file"/>
   <echo message="-----------------------------------"/>
   <echo message=""/>
   <echo message="Available targets are:"/>
   <echo message=""/>
   <echo message="deploy    --> Deploy application as directory"/>
   <echo message="deploywar --> Deploy application as a WAR file"/>
   <echo message=""/>
   </target>

   <target name="build" description="Compile main 
      source tree java files">
   <mkdir dir="${build.dir}"/> <javac destdir="${build.dir}" source="1.5" target="1.5" debug="true"
      deprecation="false" optimize="false" failonerror="true">
      <src path="${src.dir}"/> <classpath refid="master-classpath"/> </javac> </target> <target name="deploy" depends="build" description="Deploy application"> <copy todir="${deploy.path}/${name}" preservelastmodified="true"> <fileset dir="${web.dir}">
            <include name="**/*.*"/>
         </fileset>
      </copy>
   </target>

   <target name="deploywar" depends="build" 
      description="Deploy application as a WAR file">
      <war destfile="${name}.war" webxml="${web.dir}/WEB-INF/web.xml">
         <fileset dir="${web.dir}"> <include name="**/*.*"/> </fileset> </war> <copy todir="${deploy.path}" preservelastmodified="true">
         <fileset dir=".">
            <include name="*.war"/>
         </fileset>
      </copy>
   </target>
    

   <target name="clean" description="Clean output directories">
      <delete>
         <fileset dir="${build.dir}">
            <include name="**/*.class"/>
         </fileset>
      </delete>
   </target>
<!-- ============================================================ -->
<!-- Tomcat tasks -->
<!-- ============================================================ -->

<path id="catalina-ant-classpath">
<!-- We need the Catalina jars for Tomcat -->
<!--  * for other app servers - check the docs -->
   <fileset dir="${appserver.lib}">
      <include name="catalina-ant.jar"/>
   </fileset>
</path>

<taskdef name="install" classname="org.apache.catalina.ant.InstallTask">
   <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
   <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="list" classname="org.apache.catalina.ant.ListTask">
   <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="start" classname="org.apache.catalina.ant.StartTask">
   <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="stop" classname="org.apache.catalina.ant.StopTask">
   <classpath refid="catalina-ant-classpath"/>
</taskdef>

<target name="reload" description="Reload application in Tomcat">
   <reload url="${tomcat.manager.url}"username="${tomcat.manager.username}"
      password="${tomcat.manager.password}" path="/${name}"/>
</target>
</project>

W tym przykładzie użyliśmy Tomcat jako naszego serwera aplikacji. Najpierw w pliku właściwości kompilacji zdefiniowaliśmy kilka dodatkowych właściwości.

  • Plik appserver.home wskazuje ścieżkę instalacyjną do serwera aplikacji Tomcat.

  • Plik appserver.lib wskazuje na pliki bibliotek w folderze instalacyjnym Tomcat.

  • Plik deploy.path zmienna wskazuje teraz folder webapp w Tomcat.

Aplikacje w Tomcat można zatrzymywać i uruchamiać za pomocą aplikacji Tomcat Manager. Adres URL aplikacji menedżera, nazwa użytkownika i hasło są również określone w pliku build.properties. Następnie deklarujemy nową ścieżkę CLASSPATH zawierającą rozszerzeniecatalina-ant.jar. Ten plik jar jest wymagany do wykonywania zadań Tomcat za pośrednictwem Apache Ant.

Catalina-ant.jar udostępnia następujące zadania:

Nieruchomości Opis
InstallTask Instaluje aplikację internetową. Nazwa klasy: org.apache.catalina.ant.InstallTask
ReloadTask Załaduj ponownie aplikację internetową. Nazwa klasy: org.apache.catalina.ant.ReloadTask
ListTask Zawiera listę wszystkich aplikacji internetowych. Nazwa klasy: org.apache.catalina.ant.ListTask
StartTask Uruchamia aplikację internetową. Nazwa klasy: org.apache.catalina.ant.StartTask
StopTask Zatrzymuje aplikację internetową. Nazwa klasy: org.apache.catalina.ant.StopTask
ReloadTask Ponownie ładuje aplikację internetową bez zatrzymywania. Nazwa klasy: org.apache.catalina.ant.ReloadTask

Zadanie przeładowania wymaga następujących dodatkowych parametrów:

  • Adres URL do aplikacji menedżera
  • Nazwa użytkownika do ponownego uruchomienia aplikacji internetowej
  • Hasło do ponownego uruchomienia aplikacji internetowej
  • Nazwa aplikacji internetowej do ponownego uruchomienia

Wydamy deploy-warpolecenie skopiowania aplikacji internetowej do folderu Tomcat webapps, a następnie przeładujmy aplikację internetową Fax. Poniższy wynik jest wynikiem działania pliku Ant:

C:\>ant deploy-war
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 6.3 seconds

C:\>ant reload
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 3.1 seconds

Po uruchomieniu powyższego zadania aplikacja internetowa jest wdrażana, a aplikacja internetowa jest ponownie ładowana.

Możesz użyć Ant do wykonania kodu Java. W poniższym przykładzie klasa java przyjmuje argument (adres e-mail administratora) i wysyła wiadomość e-mail.

public class NotifyAdministrator
{
   public static void main(String[] args)
   {
      String email = args[0];
      notifyAdministratorviaEmail(email);
      System.out.println("Administrator "+email+" has been notified");
   }
   public static void notifyAdministratorviaEmail(String email
   { 
	   //......
   }
}

Oto prosta kompilacja, która wykonuje tę klasę Java.

<?xml version="1.0"?>
<project name="sample" basedir="." default="notify">
   <target name="notify">
      <java fork="true" failonerror="yes" classname="NotifyAdministrator">
         <arg line="[email protected]"/>
      </java>
   </target>
</project>

Po wykonaniu kompilacji daje następujący wynik:

C:\>ant
Buildfile: C:\build.xml

notify: [java] Administrator [email protected] has been notified

BUILD SUCCESSFUL
Total time: 1 second

W tym przykładzie kod java robi prostą rzecz - wysyła wiadomość e-mail. Mogliśmy do tego wykorzystać zadanie wbudowane w Ant. Jednak teraz, gdy masz już pomysł, możesz rozszerzyć plik kompilacji, aby wywoływał kod java, który wykonuje skomplikowane czynności, na przykład: szyfruje kod źródłowy.

Jeśli już pobrałeś i zainstalowałeś Eclipse, nie masz wiele do zrobienia, aby rozpocząć. Eclipse jest dostarczany w pakiecie z wtyczką Ant, gotową do użycia.

Wykonaj proste kroki, aby zintegrować Ant z Eclipse.

  • Upewnij się, że plik build.xml jest częścią projektu Java i nie znajduje się w lokalizacji zewnętrznej w stosunku do projektu.

  • Włącz widok Ant, wykonując następujące czynności Window > Show View > Other > Ant > Ant.

  • Otwórz Eksplorator projektów, przeciągnij plik build.xml do widoku Ant.

Twój widok Ant wygląda podobnie do:

Kliknięcie celów, kompilacja / czyszczenie / użycie uruchomi Anta z celem.

Kliknięcie „faks” spowoduje wykonanie domyślnego celu - usage.

Wtyczka Ant Eclipse zawiera również dobry edytor do edycji plików build.xml. Edytor zna schemat build.xml i może pomóc w uzupełnianiu kodu.

Aby użyć edytora Ant, kliknij prawym przyciskiem myszy plik build.xml (w Eksploratorze projektów) i wybierz Otwórz za pomocą> Edytor Ant. Edytor Ant powinien wyglądać podobnie do:

Edytor Ant wyświetla cele po prawej stronie. Lista celów służy jako zakładka, która pozwala przejść bezpośrednio do edycji określonego celu.

JUnit jest powszechnie używaną platformą testowania jednostkowego dla programów opartych na języku Java. Jest łatwy w użyciu i łatwy w rozbudowie. Dostępnych jest wiele rozszerzeń JUnit. Jeśli nie jesteś zaznajomiony z JUnit, powinieneś pobrać go ze strony www.junit.org i przeczytać instrukcję.

W tym rozdziale pokazano, jak wykonać testy JUnit za pomocą narzędzia Ant. Ant robi to prosto przez zadanie JUnit.

Poniżej przedstawiono atrybuty zadania JUnit:

Nieruchomości Opis
reż Skąd wywołać maszynę wirtualną. Jest to ignorowane, gdyfork jest niepełnosprawny.
jvm Polecenie użyte do wywołania maszyny JVM. Jest to ignorowane, gdyfork jest niepełnosprawny.
widelec Uruchamia test w oddzielnej maszynie JVM
errorproperty Nazwa właściwości do ustawienia w przypadku błędu JUnit
failproperty Nazwa właściwości do ustawienia w przypadku awarii JUnit
haltonerror Zatrzymuje wykonywanie, gdy wystąpi błąd testu
haltonfailure Zatrzymuje wykonywanie, gdy wystąpi awaria
print summary Zaleca Antowi wyświetlanie prostych statystyk dla każdego testu
showoutput Radzi Antowi wysłanie danych wyjściowych do swoich dzienników i elementów formatujących
tempdir Ścieżka do pliku tymczasowego, którego będzie używał Ant
koniec czasu Kończy testy, których wykonanie trwa dłużej niż to ustawienie (w milisekundach).

Kontynuujmy temat Hello World Faksuj aplikację internetową i dodaj cel JUnit.

Poniższy przykład przedstawia proste wykonanie testu JUnit:

<target name="unittest">
   <junit haltonfailure="true" printsummary="true">
      <test name="com.tutorialspoint.UtilsTest"/>
   </junit>
</target>

Ten przykład przedstawia wykonanie JUnit w klasie junit com.tutorialspoint.UtilsTest. Uruchomienie powyższego kodu daje następujące dane wyjściowe:

test:
[echo] Testing the application
[junit] Running com.tutorialspoint.UtilsTest
[junit] Tests run: 12, Failures: 0, Errors: 0, Time elapsed: 16.2 sec
BUILD PASSED

Ant posiada predefiniowany zestaw zadań, jednak możesz tworzyć własne zadania, jak pokazano na poniższym przykładzie.

Niestandardowe zadania Ant powinny rozszerzać org.apache.tools.ant.Taskklasy i powinny rozszerzać metodę execute (). Poniżej znajduje się prosty przykład:

package com.tutorialspoint.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
public class MyTask extends Task {
   String message;
   public void execute() throws BuildException {
      log("Message: " + message, Project.MSG_INFO);
   }
   public void setMessage(String message) {
      this.message= message;
   }
}

Aby wykonać zadanie niestandardowe, musisz dodać następujące elementy do pliku Hello World Aplikacja internetowa do faksowania:

<target name="custom">
   <taskdef name="custom" classname="com.tutorialspoint.ant.MyTask" />
   <custom message="Hello World!"/>
</target>

Wykonanie powyższego zadania niestandardowego powoduje wyświetlenie komunikatu „Hello World!”

c:\>ant custom
test:
[custom] Message : Hello World!
elapsed: 0.2 sec
BUILD PASSED

To tylko prosty przykład, możesz wykorzystać moc Ant, aby zrobić wszystko, co chcesz, aby ulepszyć proces kompilacji i wdrażania.

Wydrukować