Czy istnieje zadanie ANT, które wykonałoby blok tylko wtedy, gdy istnieje dany plik? Mam problem z tym, że mam ogólny skrypt Ant, który powinien wykonać specjalne przetwarzanie, ale tylko wtedy, gdy obecny jest określony plik konfiguracyjny.
file
ant
build-automation
Mario Ortegón
źródło
źródło
Odpowiedzi:
Dostępne i stan
źródło
if
iunless
włączają lub wyłączają tylko cel, do którego są dołączone, tj. Zależności celu są zawsze wykonywane. W przeciwnym razie nie działałoby uzależnienie od celu, który ustawia sprawdzaną właściwość.<Available>
jest przestarzały. Użyłem tego:<target name="do-if-abc" if="${file::exists('abc.txt')}"> ... </target>
sprawdź: nant.sourceforge.net/release/0.85/help/functions/ ...<available>
jest przestarzały? 2:${file::existst...}
wygląda na to, że nie działa z Ant (Apache ANT 1.9.7)Może to mieć trochę więcej sensu z punktu widzenia kodowania (dostępne z ant-contrib: http://ant-contrib.sourceforge.net/ ):
źródło
Od wersji Ant 1.8.0 najwyraźniej istnieją również zasoby
Z http://ant.apache.org/manual/Tasks/conditions.html
Chciałem przerobić przykład z powyższej dobrej odpowiedzi na to pytanie, a potem to znalazłem
z podręcznika mrówek pod adresem http://ant.apache.org/manual/properties.html#if+unless
Miejmy nadzieję, że ten przykład przyda się niektórym. Nie używają zasobów istniejących, ale prawdopodobnie mógłbyś? .....
źródło
if="${file.exists}"
należy zastąpićif="file.exists"
asif
iunless
sprawdzić tylko istnienie właściwości według nazwy, a nie jej wartości.Myślę, że warto odnieść się do tej podobnej odpowiedzi: https://stackoverflow.com/a/5288804/64313
Oto kolejne szybkie rozwiązanie. Istnieją inne możliwe odmiany tego
<available>
tagu:źródło
Sprawdź, używając filtrów nazw plików, takich jak
DB_*/**/*.sql
Oto odmiana wykonywania akcji, jeśli istnieje co najmniej jeden plik odpowiadający filtrowi wieloznacznemu. Oznacza to, że nie znasz dokładnej nazwy pliku.
W tym miejscu szukamy rekursywnie plików " * .sql " w dowolnych podkatalogach o nazwie " DB_ * ". Możesz dostosować filtr do swoich potrzeb.
Uwaga: Apache Ant 1.7 i nowsze!
Oto cel ustawienia właściwości, jeśli istnieją pasujące pliki:
Oto „warunkowy” cel, który działa tylko wtedy, gdy istnieją pliki:
źródło
Możesz to zrobić, zlecając wykonanie operacji z listą plików o nazwach równych nazwom, których potrzebujesz. Jest to o wiele łatwiejsze i bardziej bezpośrednie niż stworzenie specjalnego celu. I nie potrzebujesz żadnych dodatkowych narzędzi, po prostu czysta Ant.
Zobacz: FileSet .
źródło