Mrówka Apache

Mrówka Apache
Oryginalni autorzy Jamesa Duncana Davidsona
Deweloperzy Fundacja oprogramowania Apache
Pierwsze wydanie 19 lipca 2000 r .; 22 lata temu ( 19.07.2000 )
Wersja stabilna
1.10.12 / 19 października 2021 ; 16 miesięcy temu ( 2021-10-19 )
Magazyn Repozytorium mrówek
Napisane w Jawa
Platforma Java SE
Typ Narzędzie do budowania
Licencja Licencja Apache 2.0
Strona internetowa mrówka .apache .org  Edit this on Wikidata

Apache Ant to narzędzie programowe do automatyzacji procesów tworzenia oprogramowania , które wywodzi się z projektu Apache Tomcat na początku 2000 roku jako zamiennik narzędzia Make build w systemie Unix. Jest podobny do Make, ale jest zaimplementowany przy użyciu Java i wymaga platformy Java. W przeciwieństwie do Make, który używa formatu Makefile , Ant używa XML do opisania procesu tworzenia kodu i jego zależności.

Wydany na licencji Apache przez Apache Software Foundation , Ant jest projektem typu open source .

Historia

Ant („Another Neat Tool”) został wymyślony przez Jamesa Duncana Davidsona podczas przygotowywania referencyjnego silnika JSP i serwletu Sun Microsystems , później Apache Tomcat , do wydania jako open source . Do zbudowania go na platformie Solaris użyto zastrzeżonej wersji Make , ale w świecie open source nie było możliwości kontrolowania, która platforma została użyta do zbudowania Tomcata ; więc Ant został stworzony jako proste , niezależne od platformy narzędzie do budowania Tomcata z dyrektyw w „pliku kompilacji” XML. Ant (wersja 1.1) został oficjalnie wydany jako samodzielny produkt 19 lipca 2000 roku.

Złożono kilka propozycji Ant w wersji 2, takich jak AntEater autorstwa Jamesa Duncana Davidsona, Myrmidon autorstwa Petera Donalda i Mutant autorstwa Conora MacNeilla, z których żadna nie spotkała się z dużą akceptacją społeczności programistów.

W pewnym momencie (2002) Ant był narzędziem do budowania używanym w większości projektów programistycznych Java. Na przykład większość programistów Java typu open source dołączała do swojej dystrybucji pliki build.xml . [ potrzebne źródło ] Ponieważ Ant uprościł integrowanie testów JUnit z procesem kompilacji, Ant umożliwił programistom wdrożenie programowania opartego na testach i programowania ekstremalnego .

W 2004 Apache stworzył nowe narzędzie o podobnym przeznaczeniu o nazwie Maven .

Gradle , który jest podobnym oprogramowaniem, powstał w 2008 roku i zamiast tego używa kodu groovy (i kilku innych języków) zamiast XML.

Rozszerzenia

WOProject-Ant to tylko jeden z wielu przykładów rozszerzenia zadania napisanego dla Anta. Te rozszerzenia są instalowane poprzez skopiowanie ich .jar do katalogu lib mrówki . Po wykonaniu tej czynności te rozszerzenia zadań można wywołać bezpośrednio w typowym build.xml . Rozszerzenia WOProject umożliwiają WebObjects używanie mrówki do budowania ich frameworków i aplikacji, zamiast korzystania z pakietu Xcode firmy Apple .

Antcontrib zapewnia zbiór zadań, takich jak instrukcje warunkowe i operacje na właściwościach, a także inne przydatne zadania.

Ant-contrib.unkrig.de implementuje zadania i typy dla sieci, interfejsów użytkownika Swing , przetwarzania JSON i innych.

Istnieją inne rozszerzenia zadań dla Perforce , .NET Framework , EJB i manipulacji systemem plików.

Przykład

Poniżej znajduje się przykładowy plik build.xml dla prostej aplikacji Java „Hello, world”. Definiuje cztery cele - clean , clobber , kompilacja i jar , z których każdy ma powiązany opis. Cel jar wyświetla cel kompilacji jako zależność. To mówi Antowi, że zanim będzie mógł uruchomić jar , musi najpierw ukończyć cel kompilacji .


  
      
         
    
       
         
    
      
         
          
    
       
         
              
            
                  
            
        
    
 <?xml version="1.0"?>  <project  name=  "Hello"  default=  "compile"  >  <target  name=  "clean"  description=  "  delete  dir=  "classes"  />  </  target  >  <target  name=  "clobber"  Depends=  "clean"  description=  "usuń wszystkie pliki artefaktów"  >  <delete  file=  "hello.jar"  />  </target>  <target  name=  "compile"  description=  "skompiluj plik Java kod źródłowy do plików klas"  >  <mkdir  dir=  "klasy"  />  <javac  srcdir=  "."  destdir=  "classes"  />  </target>  <target  name=  "jar"  depend=  "compile"  description=  "utwórz plik Jar dla aplikacji"  >  <jar  destfile=  "hello.jar"  >  <fileset  dir=  " class"  obejmuje =  "**/*.class"  />  <manifest>  <attribute  name=  "Main-Class"  value=  "HelloProgram"  />  </manifest>  </jar>  </target>  </project> 

W obrębie każdego celu znajdują się działania, które Ant musi wykonać, aby zbudować ten cel; są one wykonywane przy użyciu wbudowanych zadań. Na przykład, aby zbudować kompilacji , Ant musi najpierw utworzyć katalog o nazwie classs (co Ant zrobi tylko wtedy, gdy jeszcze nie istnieje), a następnie wywołać kompilator Java. Dlatego używane zadania to mkdir i javac . Wykonują one podobne zadanie do narzędzi wiersza poleceń o tej samej nazwie.

Inne zadanie użyte w tym przykładzie nosi nazwę jar :

  <jar  destfile=  "hello.jar"  > 

To zadanie Ant ma taką samą nazwę jak wspólne narzędzie wiersza poleceń Java, JAR, ale tak naprawdę jest wywołaniem wbudowanej obsługi plików JAR/ZIP programu Ant. Ten szczegół nie ma znaczenia dla większości użytkowników końcowych, którzy po prostu otrzymują żądany plik JAR wraz z plikami, o które prosili.

Wiele zadań Ant deleguje swoją pracę do zewnętrznych programów, natywnych lub Java. Używają własnych <exec> i <java> Anta do konfigurowania wierszy poleceń i obsługi wszystkich szczegółów mapowania od informacji w pliku kompilacji do argumentów programu i interpretacji zwracanej wartości. Użytkownicy mogą zobaczyć, które zadania to wykonują (np. <csv> , <signjar> , <chmod> , <rpm> ), próbując wykonać zadanie w systemie bez podstawowego programu na ścieżce lub bez pełnego zestawu Java Development Kit (JDK) zainstalowany.

Ruchliwość

Ant jest przeznaczony do pracy ze wszystkimi systemami, dla których dostępne są środowiska wykonawcze Java. Jest najczęściej używany w systemach Windows , Linux , macOS i innych systemach operacyjnych Unix , ale był również używany na innych platformach, takich jak OS / 2, OpenVMS, Solaris , HP-UX.

Ant został zaprojektowany jako bardziej przenośny niż Make. W porównaniu z Make, Ant używa mniej poleceń powłoki specyficznych dla platformy . Ant zapewnia wbudowaną funkcjonalność, która ma działać tak samo na wszystkich platformach. powyższym przykładowym pliku build.xml czysty cel usuwa katalog klas i wszystko, co się w nim znajduje. W pliku Makefile zwykle można to zrobić za pomocą polecenia:

rm -rf klasy/

rm to polecenie specyficzne dla systemu Unix , niedostępne w niektórych innych środowiskach. Na przykład system Microsoft Windows używałby:

rmdir /S /Q klasy

W pliku kompilacji Ant ten sam cel można osiągnąć za pomocą wbudowanego polecenia:

   <delete  dir=  "klasy"  /> 

Ponadto Ant nie rozróżnia ukośników odwrotnych i ukośników dla katalogów oraz średników i dwukropków dla separatorów ścieżek. Konwertuje każdy na symbol odpowiedni dla platformy, na której jest wykonywany.

Ograniczenia

  • Pliki kompilacji Ant, które są napisane w XML , mogą być złożone i pełne, ponieważ są hierarchiczne, częściowo uporządkowane i wszechobecne sieciowane. Ta złożoność może stanowić przeszkodę w uczeniu się. Pliki kompilacji dużych lub złożonych projektów mogą stać się niemożliwe do zarządzania. Dobry projekt i modularyzacja plików kompilacji może poprawić czytelność, ale niekoniecznie zmniejszyć rozmiar.
  • Wiele starszych zadań, takich jak <javac> , <exec> i <java> — używa domyślnych wartości opcji, które nie są spójne z nowszymi wersjami zadań. Zmiana tych ustawień domyślnych spowodowałaby uszkodzenie istniejących skryptów Ant.
  • Podczas rozwijania właściwości w łańcuchu lub elemencie tekstowym niezdefiniowane właściwości nie są zgłaszane jako błąd, ale pozostawiane jako nierozwinięte odwołanie (np. ${unassigned.property} ).
  • Ant ma ograniczone reguły obsługi błędów.
  • Ocena właściwości z opóźnieniem nie jest obsługiwana. Na przykład podczas pracy w pętli Antcontrib <for> właściwość nie może zostać ponownie oceniona pod kątem wartości podrzędnej, która może być częścią iteracji. (Niektóre rozszerzenia innych firm ułatwiają obejście; zestawy zadań sterowania przepływem AntXtras zapewniają ponowne zdefiniowanie kursora dla pętli).
  • W plikach makefile każda reguła tworzenia jednego typu pliku z innego może być zapisana w pliku makefile. Na przykład można przekształcić dokument w inny format, używając reguł do wykonania innego narzędzia. Tworzenie podobnego zadania w Ant jest bardziej złożone: oddzielne zadanie musi być napisane w Javie i dołączone do pliku kompilacji Ant, aby obsłużyć ten sam typ funkcjonalności. Ta separacja może jednak poprawić czytelność skryptu Ant, ukrywając niektóre szczegóły dotyczące wykonywania zadania na różnych platformach.

Istnieją rozszerzenia Ant innych firm (zwane antlibs ), które zapewniają większość brakujących funkcji. Ponadto zintegrowane środowisko programistyczne (IDE) Eclipse może budować i wykonywać skrypty Ant, podczas gdy NetBeans IDE używa Ant do swojego wewnętrznego systemu kompilacji. Ponieważ oba te IDE są bardzo popularnymi platformami programistycznymi, mogą znacznie uprościć korzystanie z Ant. (Jako bonus, skrypty Ant generowane przez NetBeans mogą być używane poza tym IDE jako samodzielne skrypty.)

Zobacz też

Dalsza lektura

Linki zewnętrzne