Ketika Anda membangun dengan pakar pada mesin multicore / multi-CPU, sering kali memungkinkan untuk membangun berbagai sub proyek secara paralel. Apakah ada cara untuk melakukan ini dengan pakar? Apakah ada plugin untuk ini / apa pun?
Ketika Anda membangun dengan pakar pada mesin multicore / multi-CPU, sering kali memungkinkan untuk membangun berbagai sub proyek secara paralel. Apakah ada cara untuk melakukan ini dengan pakar? Apakah ada plugin untuk ini / apa pun?
Jawaban:
Maven 3 (per beta 1) sekarang mendukung build paralel sebagai fitur eksperimental.
Sebagai contoh,
mvn -T 4 clean install # Builds with 4 threads
mvn -T 1C clean install # 1 thread per cpu core
mvn -T 1.5C clean install # 1.5 thread per cpu core
Dokumentasi lengkap dapat ditemukan di wiki Maven.
https://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3
Solusi yang disarankan bagus tetapi saya ingin menambahkan sesuatu ke jawaban di sini mengenai stabilitas tes selama pembuatan paralel .
Jadi, ketika build paralel Maven digunakan:
mvn -T 4 clean install # Builds with 4 threads
mvn -T 1C clean install # 1 thread per cpu core
mvn -T 1.5C clean install # 1.5 thread per cpu core
Beberapa masalah dengan tes dapat muncul. Catat setiap perilaku dalam tes yang berbeda antara eksekusi tes serial dan paralel. Sebagian besar waktu itu terjadi lakukan untuk tidak tepat uji isolasi sumber daya .
Misalnya, test1 memanipulasi entri db dengan kunci 12345, yang merupakan hardcode dan test2 menggunakan entri yang sama! Itu tidak baik ...
Ini adalah situasi yang harus dipertimbangkan di tempat pertama, tetapi kadang-kadang itu dilupakan dan dapat menyebabkan masalah yang berbeda begitu beralih ke pembuatan parabola paralel dibuat.
Jika itu terjadi, dan Anda masih ingin menggunakan eksekusi paralel setidaknya dalam beberapa kesempatan, Anda dapat (tentu saja, selain mencoba memperbaiki tes dan membuatnya terisolasi dengan benar) untuk menonaktifkan berjalannya tes Maven menggunakan argumen -Dskipest:
mvn clean install -T 4 -DskipTests
Beberapa aplikasi membangun CI (misalnya hudson) dapat membangun beberapa proyek pakar sekaligus (dan bahkan pada beberapa mesin).
Dukungan untuk ini dalam 'standalone' pakar juga akan bagus, sekilas melihat melalui pelacak isu pakar memberi saya: http://jira.codehaus.org/browse/MNG-3004
Jika Anda datang ke pertanyaan ini mencari untuk memilah-milah server build Anda dan Anda tidak menggunakan yang berhubungan dengan maven secara native flag ajaib yang Anda cari adalah ini:
-Dmaven.repo.local=someNoneGlobalDir
lakukan itu untuk masing-masing bangunan Anda dan Anda dapat membiarkan mereka menjalankan semua pada saat yang sama daripada memiliki semua yang menggunakan pakar dalam antrian!