Gradle hanya membangun satu modul

152

Saya memiliki beberapa modul gradle build. Saya ingin menjalankan target untuk satu modul menggunakan root. Mis:

gradle build -Pmodule=ABC
gradle jar -Pmodule=ABC
gradle test -Pmodule=ABC
gradle compileJava -Pmodule=ABC
gradle customTask -Pmodule=ABC
etc.

Jadi setiap target dapat dijalankan dari root menentukan modul. Apakah ada cara sederhana untuk melakukan hal ini?

Terima kasih!

Viraj
sumber
if (project.hasProperty('module') && module.equals('ABC')) { // execute module ABC } .... Ini yang ingin Anda raih?
pepuch
@ pepuch, bisakah Anda menjelaskan? Saya ingin mendorong pembaruan ke aplikasi saya yang memiliki aar di dalamnya tetapi untuk membuatnya hanya membangun perubahan dalam aplikasi tanpa membangun kembali perpustakaan.
The_Martian

Jawaban:

302

Untuk menjalankan tugas dari subproyek tertentu, tentukan jalur tugasnya . Sebagai contoh:

gradle :ABC:build

Pimpinan :singkatan dari proyek root. ABCadalah proyek, dan buildtugas dalam proyek itu.

Peter Niederwieser
sumber
4
Bagaimana Anda bisa mengontrol melalui config daripada command line untuk hanya mengumpulkan satu sub proyek dari banyak? Untuk Jaringan Pipa Rilis Google, ia melepaskan "assemble clean gradle" di proyek root. Bagi saya, itu mencoba membangun AppEngine DAN Android build. Release Pipeline akan gagal pada Android build karena tidak memiliki SDK yang diinstal, dapat dimengerti untuk mesin sementara. Selain itu, sepertinya Pipelines Release juga tidak menawarkan opsi konfigurasi apa pun.
brunobowden
Dalam kasus saya, proyek root masih diinspeksi dan mengeluarkan pesan kesalahan yang saya tidak ingin atasi saat ini. Sangat menyebalkan.
Wolfgang Fahl
gradle :ABC:clean :ABC:build
StanislavKo
gradle build -p moduleA lebih baik, ia akan menangani dependensi modul.
John
84

Menemukan cara cepat

gradle build -p moduleA

moduleA adalah direktori modul.

Perintah di atas membangun a moduleAdan semua submodulnya, dan moduleAharus menjadi jalurnya

Viraj
sumber
4
Perintah di atas membangun moudleA dan semua submodule-nya, dan moduleA harus menjadi path gradle build -p path\pathSt\moduleA
nya
1
Saya memiliki pembungkus untuk sub-proyek yang tidak memiliki file gradle sendiri. Berbeda dengan jawaban yang dipilih, ini bekerja untuk saya. Juga terima kasih atas klarifikasi dalam komentar, dapatkah Anda menambahkannya ke jawabannya?
Vlasec
24

Di Mac OS, satu-satunya varian yang bekerja dengan saya:

./gradlew  ABC:build

ABC adalah nama modul

(Ini mungkin bekerja di Linux juga)

Maher Abuthraa
sumber
5

masukkan deskripsi gambar di sini

Jika IDE Anda adalah Android Studio, ada cara sederhana. Cukup pilih folder modul yang ingin Anda kompilasi, lalu klik Bangun dan pilih Jadikan Modul 'folder modul Anda'.

shaojun lyu
sumber