.classpath ve .project - sürüm kontrolünü kontrol edip etmiyor musunuz?


89

Bir bağımlılıklar ağacında birden çok modülden oluşan açık kaynaklı bir java projesi çalıştırıyorum. Tüm bu modüller, bir alt sürüm havuzundaki alt dizinlerdir. Projemize yeni gelenler için, tüm bunları tutulmada manuel olarak ayarlamak çok fazla iş gerektiriyor.

Tüm geliştiricilerimiz tutulma kullanmaz. Yine de, yeni gelenlerin başlamasına yardımcı olmak için .classpath ve .project dosyalarını kontrol etmeyi düşünüyoruz. Bu iyi bir fikir mi? Yoksa bu dosyalarda sürekli çatışmalara mı yol açar? Tutulma sırasında projeyi kurmayı kolaylaştırmanın alternatif bir yolu var mı?


1

Yanıtlar:


66

Kesinlikle evet, " Proje dosyalarınızı sürüm kontrolü altında tutuyor musunuz? "

"Yükleyin, kurun, gidin."

Ancak ... bu aslında yalnızca derleme yollarının göreceli yolları desteklediği son Eclipse3.5 ayarları için geçerlidir :

Oluşturma yolu göreceli yolları destekler


O kadar Ve Eclipse3.6, daha iyi olurdu yol değişkenleri için göreli yolları destekler içinde Linked Resources:

göreceli yol ile yol değişkeni
(3.6M5'ten beri)


2
Vay be, bunu eklediklerini bilmiyordum ... Bizi biraz kederden kurtarırdı
Uri

Görünüşe göre bu cevapla ilişkili resimler çevrimdışı.
vkraemer


17

Kesinlikle hayır - proje dosyalarını alt değiştirme yoluyla dağıtmak genellikle korkunç bir fikirdir. Özellikle birisi onları tuhaf bir şekilde değiştirebileceğinden. Projenin dokümantasyonundaki iyi bir sayfa çok daha iyi bir fikirdir. Projemizde ayrıca birçok modül ve karmaşık bir kurulum var. Her populer IDE'de (IntelliJ, Eclipse, NetBeans) projeye nasıl başlayacağınızı açıklayan bir izdiham sayfası oluşturduk. Subversion'daki bir README dosyası aynı bilgileri içerir.


32
Katılamıyorum Tecrübelerime göre, bu dosyaları mümkün olduğunca kolay hale getirmek için kontrol etmek iyidir. Birisi onları tuhaf bir şekilde değiştirebilir mi? Birisi tuhaf bir şekilde kodunuzu değiştirebilir ...
Arne Deutsch

Arne, bunu bir yorum değil, bir cevap yapmalısın.
amarillion

5
Herhangi bir IDE için proje dosyaları aslında herhangi bir projenin parçası değildir - bunları dağıtmak istiyorsanız - devam edin - bunları bahsettiğim makaleye ekleyin. Genellikle bir ekipteki herkes depodaki dosyaları değiştirebilir, ancak herkes önemli dokümantasyon düğümlerine yeni dosyalar ekleyemez, vb. Birinin sınıf yolunu ve proje dosyalarını görmezden gelmeyi unutması ve yapmaması gerektiğinde bunları teslim etmesi çok kolaydır. Onları altüst
etseniz

8
-1, daha fazla katılmıyorum. Proje ayarları, bir projeyle ilgili günlük çalışmanın çok önemli bir parçasıdır. Yanlış ayarları yanlışlıkla kontrol etmenin dezavantajları, herkesi otomatik olarak güncel tutmanın avantajlarından çok daha küçüktür. Sonuçta, önceki sürümlere her zaman kolayca geri dönebilirsiniz.
Michael Borgwardt

7
Herkesin bir görüş hakkı vardır. Aslına bakarsan, Eclipse'in (veya başka herhangi bir IDE'nin) proje sistemine dayanarak asla bir proje yaratmam ... Maven nihai proje anlama aracıdır ve IDE'ye özel kurulumları geçersiz kılar. Btw, mevcut ayarlarda bir sorun olduğunu fark etme ve önceki revizyona geri dönme zamanı, herhangi bir yeni ayarı kendi başınıza değiştirme zamanından farklı olma olasılığı düşüktür. En azından benim şirketimde, daha büyük değişikliklerden sonra bazı kullanıcı müdahalesi gerekirse, ekipteki herkes e-posta ile bilgilendiriliyor.
Bozhidar Batsov

10

Hayır oyu veriyorum, ancak bunun nedeni bu dosyaları genellikle maven'den oluşturmamdır.


m2e sizin için çoğunu yapar ama her şeyi yapmaz
Junchen Liu

6

Tecrübelerime göre, tamamen yerel ayarların dahil olduğu sınırlı durumlar hariç, her şey kaynak kontrolünde olmalıdır. Kaynak kontrolü yasası, içeri itilen her şeyin, geri çekilenler tarafından işlemesinin beklenmesidir. Ne yazık ki, tutulma genellikle bunun gibi şeylerin içinde olmasına neden olur .classpath:

    <classpathentry kind="con" 
      path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Java SE 7"/>

Yani Mac'imde bu çalışıyor ve belki de Mac'teki biri aynı JRE'ye sahip, ancak bu başka kimse için işe yaramayacak.

Ayrıca, bunun kolay bir yolu yok. Eclipse bunu her zaman ekleyecektir. .Classpath dosyasının orada olmasını İSTİYORUM, çünkü lib klasörümüzde sürüm oluşturmayı önemsediğimiz bazı 3. taraf JAR'lar var, bu yüzden onları orada bırakıyoruz, böylece yeni geliştiriciler bunları almak zorunda kalmasın . Yönetilen bir sisteme geçiyoruz, ancak yine de yönetilen + yönetilmeyen bağımlılıkları kontrol ettik. Bu, tüm geliştiricilerin iki dizinin kendi .classpathadreslerinde olduğundan emin olmaları gerektiği anlamına gelir . Ancak, her kaydettiğinizde JRE'nizi düzeltmek ve taahhüt ettiğiniz her seferinde .classpath'ınızda bir değişiklik yapmaktan daha iyidir.

Eclipse sizin için başka güzel şeyler de yapıyor. .Project dosyası, örnekler arasında genellikle aynı olacaktır, bu nedenle bunu ekleyin. Ancak tutulma için kaynak kontrolüyle ilgili en iyi şey Yapılandırmaları Çalıştır ayarlarıdır. Konfigürasyonları Çalıştır iletişim kutusundaki "Ortak" sekmesi altında, konfigürasyonları kaydedin, böylece çalışma arkadaşlarınız için Hata Ayıklama ve Çalıştırma sık kullanılan listeleri altında görünürler. Benim için bir sürü .launchdosya.settings dizine giriyor, böylece hepimiz kullanabiliyoruz.

Öyle diyorum: .settings dizin, başlatma yapılandırmaları için kaynak denetimine giriyor (* .prefs hariç)

.classpath dışarıda kalır

.project içeri girer.


JRE / JVM için yürütme ortamları kullanıldığında bile durum bu mu?
Mr_and_Mrs_D

5

Yeni kullanıcılar için mümkün olduğunca kolay bir başlangıç ​​yapmak için bu dosyaları kontrol ederdim. En iyi durumda, kullanıcı projeyi kontrol etmeli ve ekstra bilgi olmadan çalıştırabilmelidir. Bu dosyalar için kurallar, projedeki diğer dosyalarla aynıdır: dikkatli bir şekilde kullanın. Yapılandırma dosyalarında da olması gerekse de, kaynak koduna mutlak yollar yerleştirmemelisiniz.

Dosyalar proje sıfırdan çalışacak şekilde teslim edilirse, onları değiştirmek için fazla güç olmamalıdır.


5

Dosyaları doğrudan tek bir geliştiricinin ortamına bağlayacak mutlak yollar ve diğer verileri içermiyorlarsa, dosyaları alt sürüm olarak kontrol etmenizi tavsiye ederim.

Dosyalar mutlak yollar ve benzerleri içeriyorsa, README daha iyi bir seçim olacaktır.


2

Evet, bunları kesinlikle kontrol edin, ancak her türlü yol bağımlılığını belgelediğinizden ve mümkünse mutlak yollardan kaçındığınızdan emin olun.

Bunları teslim etmezseniz, projeyi kontrol eden herhangi birinin tüm bu ayarları yeniden oluşturması gerekecektir, bu da can sıkıcı ve potansiyel olarak hataya açıktır.

Bazı karmaşık kurulumlar, bu dosyaları oluşturmak için bir komut dosyası tarafından daha iyi işlenebilir, ancak genellikle bunları yalnızca teslim etmek daha iyidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.