Jalankan Metode utama Java Menggunakan Gradle

1. Perkenalan

Dalam tutorial ini, kita akan mempelajari berbagai metode untuk menjalankan metode utama Java menggunakan Gradle.

2. Metode utama Java

Ada beberapa cara untuk menjalankan metode utama Java dengan Gradle. Mari kita lihat lebih dekat menggunakan program sederhana yang mencetak pesan ke keluaran standar:

public class MainClass { public static void main(String[] args) { System.out.println("Goodbye cruel world ..."); } }

3. Berjalan dengan Plugin Aplikasi

Plugin Aplikasi adalah plugin Gradle inti yang mendefinisikan kumpulan tugas siap pakai yang membantu kami mengemas dan mendistribusikan aplikasi kami.

Mari kita mulai dengan memasukkan yang berikut ini ke file build.gradle kita :

plugins { id "application" } apply plugin : "java" ext { javaMain } application { mainClassName = javaMainClass }

Plugin secara otomatis menghasilkan tugas yang disebut run yang hanya mengharuskan kita untuk mengarahkannya ke kelas utama . Penutupan pada baris 9 melakukan persis seperti itu, yang memungkinkan kita memicu tugas:

~/work/baeldung/tutorials/gradle-java-exec> ./gradlew run > Task :run Goodbye cruel world ... BUILD SUCCESSFUL in 531ms 2 actionable tasks: 1 executed, 1 up-to-date

4. Berjalan dengan Tugas JavaExec

Selanjutnya, mari mengimplementasikan tugas kustom untuk menjalankan metode utama dengan bantuan jenis tugas JavaExec :

task runWithJavaExec(type: JavaExec) { group = "Execution" description = "Run the main class with JavaExecTask" classpath = sourceSets.main.runtimeClasspath main = javaMainClass }

Kita perlu mendefinisikan kelas utama pada baris 5 dan, sebagai tambahan, menentukan jalur kelas. Classpath dihitung dari properti default output build dan berisi jalur yang benar tempat class yang dikompilasi sebenarnya ditempatkan.

Perhatikan bahwa dalam setiap skenario, kami menggunakan nama yang memenuhi syarat, termasuk paket, dari kelas utama .

Mari kita jalankan contoh kita menggunakan JavaExec :

~/work/baeldung/tutorials/gradle-java-exec> ./gradlew runWithJavaExec > Task :runWithJavaExec Goodbye cruel world ... BUILD SUCCESSFUL in 526ms 2 actionable tasks: 1 executed, 1 up-to-date

5. Berjalan dengan Exec Task

Akhirnya, kita dapat menjalankan kelas utama kita menggunakan tipe tugas Exec dasar . Karena opsi ini memberi kita kemungkinan untuk mengonfigurasi eksekusi dalam berbagai cara, mari kita terapkan tiga tugas khusus dan diskusikan secara individual.

5.1. Berjalan dari Output Build yang Dikompilasi

Pertama, kami membuat tugas Exec khusus yang berperilaku mirip dengan JavaExec :

task runWithExec(type: Exec) { dependsOn build group = "Execution" description = "Run the main class with ExecTask" commandLine "java", "-classpath", sourceSets.main.runtimeClasspath.getAsPath(), javaMainClass }

Kita dapat menjalankan apapun yang dapat dieksekusi (dalam hal ini java) dan memberikan argumen yang diperlukan untuk menjalankannya.

Kami mengonfigurasi classpath dan menunjuk ke kelas utama kami di baris 5, dan kami juga menambahkan dependensi ke tugas pembangunan di baris 2. Ini diperlukan, karena kami hanya dapat menjalankan kelas utama kami setelah dikompilasi:

~/work/baeldung/tutorials/gradle-java-exec> ./gradlew runWithExec > Task :runWithExec Goodbye cruel world ... BUILD SUCCESSFUL in 666ms 6 actionable tasks: 6 executed 

5.2. Berjalan dari Output Jar

Pendekatan kedua bergantung pada kemasan botol dari aplikasi kecil kita:

task runWithExecJarOnClassPath(type: Exec) { dependsOn jar group = "Execution" description = "Run the mainClass from the output jar in classpath with ExecTask" commandLine "java", "-classpath", jar.archiveFile.get(), javaMainClass } 

Perhatikan ketergantungan pada tugas jar di baris 2 dan argumen kedua ke java yang dapat dieksekusi di baris 5. Kami menggunakan jar normal, jadi kami perlu menentukan titik masuk dengan parameter keempat:

~/work/baeldung/tutorials/gradle-java-exec> ./gradlew runWithExecJarOnClassPath > Task :runWithExecJarOnClassPath Goodbye cruel world ... BUILD SUCCESSFUL in 555ms 3 actionable tasks: 3 executed

5.3. Menjalankan dari Stoples Keluaran yang Dapat Dieksekusi

Cara ketiga juga bergantung pada kemasan jar, tetapi kami menentukan titik masuk dengan bantuan properti manifes :

jar { manifest { attributes( "Main-Class": javaMainClass ) } } task runWithExecJarExecutable(type: Exec) { dependsOn jar group = "Execution" description = "Run the output executable jar with ExecTask" commandLine "java", "-jar", jar.archiveFile.get() } 

Di sini, kita tidak perlu lagi menentukan classpath , dan kita cukup menjalankan jar:

~/work/baeldung/tutorials/gradle-java-exec> ./gradlew runWithExecJarExecutable > Task :runWithExecJarExecutable Goodbye cruel world ... BUILD SUCCESSFUL in 572ms 3 actionable tasks: 3 executed

6. Kesimpulan

Dalam artikel ini, kami mempelajari berbagai cara menjalankan metode utama Java menggunakan Gradle.

Di luar kotak, plugin Aplikasi menyediakan tugas yang dapat dikonfigurasi secara minimal untuk menjalankan metode kami. The JavaExec jenis tugas memungkinkan kita untuk menjalankan utama metode tanpa menentukan plugin apapun.

Terakhir, tipe tugas Exec generik dapat digunakan dalam berbagai kombinasi dengan java yang dapat dieksekusi untuk mencapai hasil yang sama tetapi memerlukan ketergantungan pada tugas lain.

Seperti biasa, kode sumber untuk tutorial ini tersedia di GitHub.