Haruskah saya menyimpan file proyek seperti .proyek Eclipse, .classpath, .settings, di bawah kontrol versi (misalnya Subversion, GitHub, CVS, Mercurial, dll)?
java
eclipse
version-control
ide
cretzel
sumber
sumber
Jawaban:
Anda ingin tetap mengontrol versi file pengaturan portabel apa pun ,
artinya:
File apa pun yang tidak memiliki jalur absolut di dalamnya.
Itu termasuk:
Aturan praktis bagi saya:
Anda harus dapat memuat proyek ke dalam ruang kerja dan memiliki semua yang Anda butuhkan di dalamnya untuk mengaturnya dengan benar di IDE Anda dan memulai dalam beberapa menit.
Tidak ada dokumentasi tambahan, halaman wiki untuk dibaca atau apa yang tidak.
Muat, siapkan, pergi.
sumber
file .project dan .classpath ya. Namun kami tidak menyimpan pengaturan IDE kami dalam kontrol versi. Ada beberapa plugin yang tidak melakukan pekerjaan dengan baik untuk pengaturan yang ada dan kami menemukan bahwa beberapa pengaturan tidak terlalu portabel dari satu mesin dev ke mesin berikutnya. Jadi, kami memiliki halaman Wiki yang menyoroti langkah-langkah yang diperlukan pengembang untuk menyiapkan IDE mereka.
sumber
Ini adalah apa yang saya anggap sebagai file yang dihasilkan, dan karena itu saya tidak pernah menempatkannya di bawah kontrol versi. Mereka dapat berbeda dari mesin ke mesin dan pengembang ke pengembang, misalnya ketika orang memasang plugin Eclipse yang berbeda.
Sebagai gantinya, saya menggunakan alat build (Maven) yang dapat menghasilkan versi awal dari file ini saat Anda melakukan pembayaran baru.
sumber
Saya bingung antara dua opsi di sini.
Di satu sisi, saya pikir setiap orang harus bebas menggunakan seperangkat alat pengembangan yang paling produktif dengan mereka, selama semua artefak sumber disimpan dalam kontrol versi, dan skrip build (katakanlah ANT atau Maven) memastikan kepatuhan standar oleh menentukan secara tepat JDK mana yang akan digunakan, versi library pihak ketiga mana yang akan bergantung, menjalankan pemeriksaan gaya (misalnya, checkstyle) dan menjalankan pengujian unit, dll.
Di sisi lain, saya pikir begitu banyak orang menggunakan alat yang sama (mis. Eclipse) dan seringkali jauh lebih baik untuk memiliki beberapa hal yang distandarisasi pada waktu desain daripada waktu pembuatan - misalnya Checkstyle jauh lebih berguna sebagai plugin Eclipse daripada sebagai tugas ANT atau Maven - lebih baik melakukan standarisasi pada set alat pengembangan dan seperangkat plugin umum.
Saya mengerjakan proyek di mana setiap orang menggunakan JDK yang sama persis, versi Maven yang sama, versi Eclipse yang sama, kumpulan plugin Eclipse yang sama dan file konfigurasi yang sama (misalnya profil Checkstyle, aturan pemformat kode, dll.). Semua ini disimpan dalam kontrol sumber - .project, .classpath, dan semua yang ada di folder .settings. Itu membuat hidup sangat mudah selama fase awal proyek ketika orang-orang terus menyesuaikan dependensi atau proses build. Ini juga sangat membantu ketika menambahkan permulaan baru ke proyek.
Secara seimbang, menurut saya jika tidak ada terlalu banyak peluang untuk perang agama, Anda harus menstandarkan set dasar alat pengembangan dan plugin dan memastikan kepatuhan versi dalam skrip build Anda (misalnya dengan secara eksplisit menentukan versi Java). Jangan berpikir bahwa menyimpan JDK dan penginstalan Eclipse dalam kontrol sumber memiliki banyak manfaat. Segala sesuatu yang lain yang bukan artefak turunan - termasuk file proyek, konfigurasi dan preferensi plugin Anda (terutama pemformat kode dan aturan gaya) - harus masuk ke kontrol sumber.
PS Jika Anda menggunakan Maven, ada argumen untuk mengatakan bahwa file .project dan .classpath adalah artefak turunan. Ini hanya berlaku jika Anda membuatnya setiap kali Anda melakukan build, dan jika Anda tidak pernah harus mengubahnya secara manual (atau secara tidak sengaja mengubahnya dengan mengubah beberapa preferensi) setelah membuatnya dari POM
sumber
Tidak, karena saya hanya file kontrol versi yang diperlukan untuk membangun perangkat lunak. Selain itu, pengembang individu mungkin memiliki pengaturan khusus proyek mereka sendiri.
sumber
Tidak, saya adalah pengguna berat Maven dan menggunakan plugin Q for Eclipse yang membuat dan terus memperbarui .project dan .classpath. Untuk hal-hal lain seperti pengaturan plugin, saya biasanya menyimpan halaman README atau Wiki tentang itu.
Juga mereka yang pernah bekerja dengan saya yang lebih memilih IDE lain, cukup gunakan Maven-plugins untuk menghasilkan file yang dibutuhkan agar IDE mereka (dan diri mereka sendiri) tetap menyenangkan.
sumber
Ini semua pendapat, saya kira - tetapi praktik terbaik selama bertahun-tahun menunjukkan bahwa file khusus untuk IDE tertentu tidak boleh disimpan dalam kontrol sumber, kecuali seluruh organisasi Anda distandarisasi pada satu IDE dan Anda tidak pernah berniat untuk beralih.
Apa pun itu, Anda pasti tidak ingin pengaturan pengguna disimpan - dan .project dapat berisi pengaturan yang benar-benar khusus pengembang.
Saya merekomendasikan menggunakan sesuatu seperti Maven atau Ant sebagai sistem build standar. Setiap pengembang bisa mendapatkan classpath yang dikonfigurasi dalam IDE mereka dalam beberapa detik.
sumber
Ya, kecuali untuk folder .settings. Mengkomit file lain berfungsi dengan baik untuk kami. Ada pertanyaan serupa di sini .
sumber
Meskipun saya biasanya setuju dengan pendekatan "jangan versi file yang dihasilkan", kami memiliki masalah dengan itu dan harus beralih kembali.
Konteks kami adalah Eclipse + Maven, menggunakan plug-in m2eclipse. Kami memiliki lingkungan pengembangan yang sama, dengan direktori yang sama sebanyak mungkin. Namun terkadang seseorang mencoba plugin, atau mengubah hal-hal kecil dalam konfigurasi, atau mengimpor ruang kerja kedua untuk cabang yang berbeda ...
Masalah kita adalah pembuatan .project dilakukan saat mengimpor proyek di Eclipse, tetapi tidak diperbarui dalam semua kasus nanti . Ini menyedihkan, dan mungkin tidak permanen karena plug-in m2eclipse akan meningkat, tetapi itu benar sekarang. Jadi kami akhirnya memiliki konfigurasi yang berbeda. Apa yang kami miliki hari ini adalah: beberapa sifat ditambahkan ke banyak proyek pada beberapa mesin, yang kemudian berperilaku jauh berbeda :-(
Satu-satunya solusi yang kami lihat adalah versi file .project (untuk menghindari risiko, kami akan melakukan hal yang sama untuk .classpath dan .settings). Dengan begitu, ketika satu pengembang mengubah pomnya, file lokal diperbarui menggunakan m2eclipse, semuanya terikat bersama, dan pengembang lain akan melihat semua perubahan.
Jadi, untuk menjawab pertanyaan Anda, saya katakan ya, lakukan file-file itu.
Saya juga menyukai:
sumber
Sepertinya file proyek ini dapat berubah seiring waktu saat Anda mengerjakan proyek jadi ya, saya menempatkannya di bawah kontrol versi.
sumber
Iya. Semuanya kecuali membangun keluaran.
sumber
Kami menggunakan IntelliJ IDEA, dan menyimpan versi '.sample' dari file proyek (.ipr) dan modul (.iml) di bawah kontrol versi.
Hal yang lebih besar di sini adalah berbagi dan menggunakan kembali daripada membuat versi, IMHO. Tetapi jika Anda akan membagikan konfigurasi ini, tempat apa yang lebih baik untuk meletakkannya selain repositori, tepat di sebelah yang lainnya.
Beberapa keuntungan dari file proyek bersama & berversi:
Perhatikan bahwa di IDEA file ini berisi konfigurasi seperti: apa yang dimaksud dengan dirs "source" dan "test source"; segala sesuatu tentang dependensi eksternal (di mana letak library jars, serta sumber terkait atau javadocs); opsi build, dll. Ini adalah hal-hal yang tidak berbeda dari pengembang ke pengembang (saya tidak setuju dengan ini ). IDEA menyimpan lebih banyak pengaturan IDE pribadi di tempat lain, serta konfigurasi plugin apa pun. (Saya tidak begitu mengenal Eclipse; ini mungkin atau mungkin tidak terlalu berbeda.)
Saya setuju dengan jawaban ini yang mengatakan:
Dan kami memilikinya seperti ini, berkat file proyek berversi.
sumber