Chcę wykonać polecenie z pliku kompilacji Ant, dla każdego pliku w katalogu.
Szukam rozwiązania niezależnego od platformy.
Jak mam to zrobic?
Jasne, mógłbym napisać skrypt w jakimś języku skryptowym, ale dodałoby to dalsze zależności do projektu.
file-io
ant
build-process
build-automation
ivan_ivanovich_ivanoff
źródło
źródło
Użyj zadania <apply> .
Wykonuje polecenie raz dla każdego pliku. Określ pliki za pomocą zestawów plików lub dowolnego innego zasobu. <apply> jest wbudowane; nie jest potrzebna żadna dodatkowa zależność; nie ma potrzeby wykonywania niestandardowych zadań.
Możliwe jest również uruchomienie polecenia tylko raz, dołączając wszystkie pliki jako argumenty za jednym razem. Użyj atrybutu parallel, aby zmienić zachowanie.
Przepraszam za spóźnienie o rok.
źródło
Podejście bez wkładu mrówek jest sugerowane przez Tassilo Horn ( oryginalny cel jest tutaj )
Zasadniczo, ponieważ nie ma rozszerzenia <java> (jeszcze?) W taki sam sposób, w jaki <apply> rozszerza <exec> , sugeruje użycie <apply> (które oczywiście może również uruchomić program java w wierszu poleceń)
Oto kilka przykładów:
źródło
Oto sposób na zrobienie tego za pomocą javascript i zadania ant scriptdef. Nie potrzebujesz ant-contrib, aby ten kod działał, ponieważ scriptdef jest podstawowym zadaniem ant.
źródło
project
w powyższym przykładzie występuje odniesienie do zmiennej , ale bez udostępnionej wcześniejszej definicji. Byłoby dobrze, gdyby to zostało przedstawione lub wyjaśnione. EDYCJA: n / m, stwierdzono, żeproject
jest to predefiniowana zmienna dostępu do bieżącego projektu. Podejrzewałem to, ale nie byłem pewien.mrówka jest złem; napisz własne zadanie mrówki.
ant-contrib jest zła, ponieważ próbuje zmienić styl mrówki ze stylu deklaratywnego na imperatywny. Ale xml tworzy gówniany język programowania.
W przeciwieństwie do tego, niestandardowe zadanie mrówki umożliwia pisanie w prawdziwym języku (Java), w prawdziwym środowisku IDE, w którym można pisać testy jednostkowe, aby upewnić się, że zachowuje się pożądane, a następnie sporządzić czystą deklarację w skrypcie kompilacji o pożądane zachowanie.
Ta racja ma znaczenie tylko wtedy, gdy zależy ci na pisaniu skryptów mrówek, które można utrzymać. Jeśli nie zależy Ci na łatwości utrzymania, zrób wszystko, co działa. :)
Jtf
źródło
Wiem, że ten post jest naprawdę stary, ale teraz, gdy minęło trochę czasu i wersji Ant, jest sposób na zrobienie tego z podstawowymi funkcjami Ant i pomyślałem, że powinienem się nim podzielić.
Odbywa się to za pomocą rekurencyjnej makrodefy, która wywołuje zagnieżdżone zadania (można wywołać nawet inne makra). Jedyną konwencją jest użycie stałej nazwy zmiennej (tutaj elementu).
Najważniejsze funkcje potrzebne, gdy:
Nie udało mi się ustawić separatora zmiennego, ale może to nie być poważny minus.
źródło
Możesz użyć zadania ant-contrib „for”, aby iterować na liście plików oddzielonych dowolnym separatorem, domyślnym separatorem jest „,”.
Poniżej znajduje się przykładowy plik, który to pokazuje:
źródło
Zrób to, co sugerował blak3r i zdefiniuj ścieżkę klas swoich celów
gdzie lib to miejsce, w którym przechowujesz swoje słoiki
źródło