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!


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.


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


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)


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'.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.