Saya mencoba untuk meneruskan argumen dari baris perintah ke kelas java. Saya mengikuti posting ini: http://gradle.1045684.n5.nabble.com/Gradle-application-plugin-question-td5539555.html tetapi kodenya tidak berfungsi untuk saya (mungkin itu tidak dimaksudkan untuk JavaExec?). Inilah yang saya coba:
task listTests(type:JavaExec){
main = "util.TestGroupScanner"
classpath = sourceSets.util.runtimeClasspath
// this works...
args 'demo'
/*
// this does not work!
if (project.hasProperty("group")){
args group
}
*/
}
Output dari nilai args hard code di atas adalah:
C:\ws\svn\sqe\sandbox\selenium2forbg\testgradle>g listTests
:compileUtilJava UP-TO-DATE
:processUtilResources UP-TO-DATE
:utilClasses UP-TO-DATE
:listTests
Received argument: demo
BUILD SUCCESSFUL
Total time: 13.422 secs
Namun, setelah saya mengubah kode untuk menggunakan bagian hasProperty dan meneruskan "demo" sebagai argumen di baris perintah, saya mendapatkan NullPointerException:
C:\ws\svn\sqe\sandbox\selenium2forbg\testgradle>g listTests -Pgroup=demo -s
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\ws\svn\sqe\sandbox\selenium2forbg\testgradle\build.gradle' line:25
* What went wrong:
A problem occurred evaluating root project 'testgradle'.
> java.lang.NullPointerException (no error message)
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating root project
'testgradle'.
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:54)
at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:127)
at org.gradle.configuration.BuildScriptProcessor.evaluate(BuildScriptProcessor.java:38)
Ada proyek uji sederhana yang tersedia di http://gradle.1045684.n5.nabble.com/file/n5709919/testgradle.zip yang menggambarkan masalah tersebut.
Ini menggunakan Gradle 1.0-rc-3. NullPointer berasal dari baris kode ini:
args group
Saya menambahkan tugas berikut sebelum definisi tugas, tetapi itu tidak mengubah hasilnya:
group = hasProperty('group') ? group : 'nosuchgroup'
Setiap petunjuk tentang cara meneruskan argumen baris perintah ke gradle dihargai.
Jawaban:
project.group
adalah properti yang telah ditentukan sebelumnya. Dengan-P
, Anda hanya dapat menyetel properti proyek yang belum ditentukan sebelumnya. Alternatifnya, Anda bisa menyetel properti sistem Java (-D
).sumber
Berdasarkan jawaban Peter N, ini adalah contoh cara menambahkan argumen yang ditentukan pengguna (opsional) untuk diteruskan ke utama Java untuk tugas JavaExec (karena Anda tidak dapat menyetel properti 'args' secara manual karena alasan yang dia kutip.)
Tambahkan ini ke tugas:
... dan jalankan di baris perintah seperti ini
sumber
gradle run -Purl='localhost', -Pport='8080', -Pusername='admin'
bagaimana tampilan kode saya di build.gradle?Program saya dengan dua argumen, args [0] dan args [1]:
build.gradle saya
perintah terminal saya:
sumber
Mulai dari Gradle 4.9, plugin Aplikasi memahami
--args
opsi, jadi meneruskan argumen sesederhana:build.gradle
src / main / java / my / App.java
pesta
sumber
Anda dapat menggunakan opsi baris perintah khusus di Gradle untuk menghasilkan sesuatu seperti:
Namun, opsi baris perintah kustom di Gradle adalah fitur inkubasi .
Solusi Java
Untuk mendapatkan hasil seperti ini, ikuti petunjuk di sini :
Kemudian daftarkan:
Sekarang Anda dapat melakukan:
keluaran:
Solusi Kotlin
lalu daftarkan tugas dengan:
sumber
Jika Anda perlu memeriksa dan menetapkan satu argumen ,
build.gradle
file Anda akan seperti ini:Dan perintah Sample di windows:
sumber
Saya telah menulis sepotong kode yang menempatkan argumen baris perintah dalam format yang diharapkan gradle.
tugas saya terlihat seperti ini:
Untuk meneruskan argumen dari baris perintah, Anda menjalankan ini:
sumber
Ada contoh bagus di sini:
https://kb.novaordis.com/index.php/Gradle_Pass_Configuration_on_Command_Line
Detail mana yang dapat Anda berikan parameter dan kemudian berikan default dalam variabel ext seperti:
dan kemudian merujuk di Gradle sebagai:
Lalu di mana pun di skrip build Anda, Anda dapat mereferensikannya sebagai kursus di mana pun Anda dapat mereferensikannya
project.ext.color
Lebih banyak tip di sini: https://kb.novaordis.com/index.php/Gradle_Variables_and_Properties
sumber
teruskan url dari baris perintah, pertahankan url Anda dalam file gradle aplikasi sebagai berikut resValue "string", "url", CommonUrl
dan beri parameter pada file gradle.properties sebagai berikut CommonUrl = "letakkan url Anda di sini atau mungkin kosong"
dan berikan perintah ke dari baris perintah sebagai berikut gradle assembleRelease -Pcommanurl = letakkan URL Anda di sini
sumber