Apakah ada Tugas ANT yang akan menjalankan blok hanya jika file yang diberikan ada? Saya memiliki masalah bahwa saya memiliki skrip semut generik yang harus melakukan beberapa pemrosesan khusus tetapi hanya jika ada file konfigurasi tertentu.
file
ant
build-automation
Mario Ortegón
sumber
sumber
Jawaban:
Tersedia dan kondisi
sumber
if
danunless
hanya mengaktifkan atau menonaktifkan target yang dilampirkan, yaitu ketergantungan target selalu dieksekusi. Kalau tidak, itu tidak akan berhasil tergantung pada target yang menetapkan properti yang Anda periksa.<Available>
sudah usang. Saya telah menggunakan ini:<target name="do-if-abc" if="${file::exists('abc.txt')}"> ... </target>
cek: nant.sourceforge.net/release/0.85/help/functions/…<available>
sudah usang? 2:${file::existst...}
tampaknya tidak bekerja dengan Ant (Apache ANT 1.9.7)Ini mungkin lebih masuk akal dari perspektif pengkodean (tersedia dengan semut-contrib: http://ant-contrib.sourceforge.net/ ):
sumber
Sejak Ant 1.8.0 rupanya ada juga resourceexists
Dari http://ant.apache.org/manual/Tasks/conditions.html
Saya akan mengerjakan ulang contoh dari jawaban bagus di atas untuk pertanyaan ini, dan kemudian saya menemukan ini
dari manual semut di http://ant.apache.org/manual/properties.html#if+unless
Semoga contoh ini bermanfaat bagi sebagian orang. Mereka tidak menggunakan sumber daya yang ada, tetapi mungkin Anda bisa? .....
sumber
if="${file.exists}"
harus diganti denganif="file.exists"
asif
danunless
periksa hanya keberadaan properti dengan nama, bukan nilainya.Saya pikir nilainya merujuk referensi yang serupa ini: https://stackoverflow.com/a/5288804/64313
Ini adalah solusi cepat lainnya. Ada variasi lain yang memungkinkan untuk ini menggunakan
<available>
tag:sumber
Periksa Menggunakan filter Filename like
DB_*/**/*.sql
Berikut adalah variasi untuk melakukan tindakan jika ada satu atau lebih file yang sesuai dengan filter wildcard. Artinya, Anda tidak tahu nama pasti file tersebut.
Di sini, kami mencari file " * .sql " di setiap sub-direktori yang disebut " DB_ * ", secara rekursif. Anda dapat menyesuaikan filter dengan kebutuhan Anda.
NB: Apache Ant 1.7 dan lebih tinggi!
Berikut adalah target untuk menetapkan properti jika ada file yang cocok:
Berikut adalah target "kondisional" yang hanya berjalan jika ada file:
sumber
Anda dapat melakukannya dengan memesan untuk melakukan operasi dengan daftar file dengan nama yang sama dengan nama yang Anda butuhkan. Jauh lebih mudah dan langsung daripada membuat target khusus. Dan Anda tidak perlu alat tambahan, hanya Semut murni.
Lihat: FileSet .
sumber