Eclipse .classpath / .project dosyasında nedir?


143

Son zamanlarda ekip üyelerimizden biri için bir Eclipse projesiyle ilgili bir sorun yaşadık. Tomcat uygulamanın JAR'larını dağıtmıyordu.

Sonunda .classpathEclipse dosyasının projenin iyi olduğu ekip üyeleriyle aynı olmadığını fark ettik . Biz yerine.classpathDosyayı Tamam olan bir projeden biriyle ve Tomcat konuşlandırması tamamlandı.

Sadece meraktan ve bir şeylerin yanlış olup olmadığına, neyin içinde ve dosyalara bakılacağını bilmek . Oraya ne ekleyebilirim, hepsi ne anlama geliyor?.classpath.project


.Classpath dosyası Java'ya özgü mü? Bu soru çoğunlukla dile agnostik görünüyor, ancak bu cevaptan sadece Java ile alakalı gibi görünüyor.
Casey Kuball

Yanıtlar:


144

Eclipse, eklentiler için bir çalışma ortamıdır. Eclipse'de gördüğünüz her şey, Eclipse'nin değil, Eclipse'de yüklü eklentilerin sonucudur.

.projectDosya çekirdek Eclipse platformu tarafından korunur ve bunun amacı bir jenerik, eklenti bağımsız Eclipse görünümünden projeyi tanımlamaktır. Projenin adı ne? çalışma alanındaki başka hangi projelere atıfta bulunuyor? Projeyi oluşturmak için kullanılan inşaatçılar nelerdir? ("yapı" kavramı özellikle Java projeleri için değil, aynı zamanda diğer proje türleri için de geçerlidir)

.classpathDosya Eclipse'nın JDT özelliği (tarafından korunur özelliği = eklentileri seti). JDT projede bu tür birden çok "meta" dosya tutar (projenin .settingsiçindeki dizine bakın ); .classpathDosya sadece bunlardan biridir. Özellikle, .classpathdosya, projeyi düzgün bir şekilde derlemek için JDT özelliğinin ihtiyaç duyduğu bilgileri içerir: projenin kaynak klasörleri (yani, ne derlenecek); çıkış klasörler (burada derlemek için ); sınıf yolu girişleri (çalışma alanındaki diğer projeler, dosya sistemindeki rastgele JAR dosyaları vb.).

Bu tür dosyaları bir makineden diğerine körü körüne kopyalamak riskli olabilir. Örneğin, sınıf yoluna rasgele JAR dosyaları yerleştirilirse (yani, çalışma alanının dışında bulunan ve mutlak yol adlandırma ile adlandırılan JAR dosyaları), .classpathdosya taşınabilir olmayan olarak işlenir ve değiştirilebilmesi için değiştirilmesi gerekir taşınabilir. .classpathDosya taşınabilirliğini garanti etmek için izlenebilecek bazı en iyi uygulamalar vardır .


58
Tüm bunların dışında bir yabancı olarak, "Eclipse bir şekilde proje çalışma alanı yönetimi hakkında her şeyi herkesin anlaması çok zor olan anlaşılmaz bir siyah sanat haline getirmeyi başarıyor" anlamına geliyor.
Warren P

1
@Isaac - Merak ediyorum, eğer projemi yönetirsem gitve Maven, yani (basitlik için) tek bir srcklasörle (basit bir "merhaba dünya" .javadosyası tutar ) havuzun (proje) "kök" klasörüne sahibim ve proje enpox.xml : - dosya seni doğru anladıysam, bu yüzden, gerek yoktur (ya da belki de zorunlu olarak gerek) tutmak için .project, .classpathve .settings/dosya / klasörleri de olduğu gibi gitdepo (ie-ekleyebilirsiniz .gitignoreörneğin dosyası)?
Guy Avraham

1
@GuyAvraham, Eclipse ile nasıl çalıştığınıza ve özellikle de bir çalışma alanını nasıl başlattığınıza bağlıdır. Eclipse'i yeni bir çalışma alanında başlatıp ardından "varolan Maven projelerini içe aktar" seçeneğini kullanıyor musunuz? eğer öyleyse, haklısınız - sizin için buna m2eclipsedikkat ettiği için bu dosyalardan hiçbirine gerçekten ihtiyaç duyulmaz (veya en azından, yapması gereken şey budur).
Isaac

1
@buncis .projectolmamalı .gitignore. İlgili olarak .classpath- kullanırsanız m2eclipseve çalışma alanınız başlangıçta Maven projelerini güncelleyecek şekilde yapılandırılmışsa , ekleme yapmaya uygun olmalısınız.classpath , .gitignoreancak kendim test etmedim.
Isaac

1
@buncis bu son yorumu düzeltiyor. Görünüşe göre M2E, günümüzde projeleri yapılandırmak için çok iyi bir iş çıkarıyor. Son zamanlarda her türden yaklaşık 150 Java projesinin kod tabanında çalıştım. Hepsini kaldırdım .projectve .classpathekledim .gitignore. Her şey iyi çalışıyor ve Git'te bu dosyaları çok sık güncellememe gerek yok.
Isaac

37

.project

Çalışma alanında bir proje oluşturulduğunda, otomatik olarak projeyi tanımlayan bir proje açıklama dosyası oluşturulur. Bu dosyanın tek amacı, projeyi kendi kendini tanımlamaktır, böylece bir sunucuya sıkıştırılmış veya serbest bırakılmış bir proje başka bir çalışma alanında doğru bir şekilde yeniden oluşturulabilir.

.classpath

Sınıf yolu, bir projedeki hangi Java kaynak dosyalarının ve kaynak dosyalarının Java oluşturucu tarafından değerlendirileceğini ve proje dışındaki türlerin nasıl bulunacağını belirtir. Java oluşturucu Java kaynak dosyalarını çıktı klasörüne derler ve ayrıca kaynakları bu dosyaya kopyalar.


11

Çeşitli eklentiler tarafından genişletilebildiğinden, söz konusu dosyalar için tam başvuru yoktur.

Temel olarak, .project dosyaları oluşturucu ve proje niteliği ayarları gibi proje ayarlarını saklarken, .classpath dosyaları çalıştırma sırasında kullanılacak sınıfyolunu tanımlar. Sınıf yolu dosyaları, projedeki klasörlere karşılık gelen src ve hedef girdilerini içerir; con girişleri, JVM kütüphaneleri veya tutulma eklentileri bağımlılıkları gibi bir tür "sanal" girişleri tanımlamak için kullanılır (normal Java proje bağımlılıkları, özel bir src girişi kullanılarak farklı şekilde görüntülenir).


3

Bu tutulma dokümanındaki .projectdosyadaki işaretlemelerle ilgili ayrıntılar bulunur : Proje açıklama dosyası

.projectDosyayı şu şekilde tanımlar :

Çalışma alanında bir proje oluşturulduğunda, otomatik olarak projeyi tanımlayan bir proje açıklama dosyası oluşturulur. Bu dosyanın amacı, projeyi kendi kendini tanımlamaktır, böylece bir sunucuya sıkıştırılmış veya serbest bırakılmış bir proje başka bir çalışma alanında doğru bir şekilde yeniden oluşturulabilir. Bu dosyaya her zaman ".project" adı verilir

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.