Saya memiliki aplikasi Java yang berjalan dengan tugas gradle kustom dan aplikasi tersebut memerlukan beberapa argumen saat dipanggil. Ini adalah:
programName ( string | -f filename | -d key | -h)
Options:
string Message to be used.
-d key Use default messages, key must be s[hort], m[edium] or l[ong].
-f filename Use specified file as input.
-h Help dialog.
Tugas Gradle terlihat seperti:
task run (type: JavaExec){
description = "Secure algorythm testing"
main = 'main.Test'
classpath = sourceSets.main.runtimeClasspath
}
Saya sudah mencoba berlari gradle run -h
dan tidak berhasil.
Jawaban:
Sejak Gradle 4.9, argumen baris perintah bisa diteruskan dengan --args. Misalnya, jika Anda ingin meluncurkan aplikasi dengan argumen baris perintah
foo --bar
, Anda dapat menggunakanLihat Juga Plugin Aplikasi Gradle
Cara mengupgrade Gradle wrapper
sumber
'foo --bar'
membingungkan, mengapa tidak digunakan saja'foo bar'
.Gradle 4.9+
Ini mengasumsikan Anda
build.gradle
dikonfigurasi dengan plugin Aplikasi . Andabuild.gradle
akan terlihat seperti ini:Pre-Gradle 4.9
Sertakan yang berikut ini dalam Anda
build.gradle
:Kemudian untuk menjalankan:
gradle run -PappArgs="['arg1', 'args2']"
sumber
gradle run --args 'arg1 arg2'
Tidak berhasil untuk saya. Saya harus melakukan:gradle run --args='arg1 arg2'
Maaf sudah terlambat menjawab.
Saya menemukan jawaban yang mirip dengan @xlm:
Dan panggil seperti:
sumber
Jika Anda ingin menggunakan kumpulan argumen yang sama sepanjang waktu, berikut ini yang Anda butuhkan.
sumber
id 'application'
plugin dan ini adalah jawaban yang saya butuhkan (berfungsi).Anda dapat menemukan solusinya dalam Masalah meneruskan properti dan parameter sistem saat menjalankan kelas Java melalui Gradle . Keduanya melibatkan penggunaan
args
propertiAnda juga harus membaca perbedaan antara passing with
-D
atau with-P
yang dijelaskan dalam dokumentasi Gradlesumber
Tentu saja jawaban di atas semuanya melakukan pekerjaan itu, tetapi saya tetap ingin menggunakan sesuatu seperti
nah ini tidak bisa dilakukan, tapi bagaimana jika kita bisa:
Jika menurut Anda lebih elegan, maka Anda bisa melakukannya, triknya adalah memproses baris perintah dan memodifikasinya sebelum gradle melakukannya, ini dapat dilakukan dengan menggunakan skrip init
Skrip init di bawah ini:
Jadi dalam tugas Anda (atau JavaExec, Exec) Anda dapat:
Skrip initnya adalah:
Batasan:
Jika Anda tidak menyukai skrip init global, Anda dapat menentukannya di baris perintah
Atau lebih baik tambahkan alias ke shell Anda:
sumber
argsI.remove()
ada efek yang diinginkan). Saran?Anda perlu meneruskannya
args
ke tugas menggunakan properti proyek, seperti:ditambahkan ke definisi tugas Anda (lihat dokumen dsl )
Kemudian Anda dapat menjalankannya sebagai:
sumber