.classpath e .project: controllare la versione o no?


87

Sto eseguendo un progetto java open source che consiste di più moduli in un albero di dipendenze. Tutti questi moduli sono sottodirectory in un repository subversion. Per i nuovi arrivati ​​al nostro progetto, è molto lavoro impostare tutto manualmente in eclipse.

Non tutti i nostri sviluppatori usano eclipse. Tuttavia, stiamo considerando di controllare i file .classpath e .project per aiutare i nuovi arrivati ​​a iniziare. E 'questa una buona idea? O ciò porterebbe a conflitti costanti in quei file? C'è un modo alternativo per rendere il progetto facile da configurare su eclipse?


Risposte:


65

Assolutamente sì, come ho detto in " Tieni i tuoi file di progetto sotto il controllo della versione? "

"Caricalo, sistemalo, vai."

Ma ... questo è effettivamente vero solo per le recenti impostazioni di Eclipse3.5, in cui i percorsi di compilazione supportano i percorsi relativi :

Il percorso di compilazione supporta percorsi relativi


Ed Eclipse3.6 sarebbe migliore, poiché supporta percorsi relativi per variabili di percorso in Linked Resources:

variabile di percorso con percorso relativo
(dal 3.6M5)


2
Wow, non sapevo che avessero aggiunto questo ... Ci avrebbe risparmiato un po 'di dolore
Uri

Sembra che le immagini associate a questa risposta siano off-line.
vkraemer

1
@vkraemer: vero. Ora ho ripristinato quelle due immagini, la prima proveniente da archive.eclipse.org/eclipse/downloads/drops/R-3.5-200906111540/… e la seconda da download.itemis.com/mirror/eclipse/R-3.6 -201006080911./… .
VonC

17

Assolutamente no: generalmente è una pessima idea distribuire i file di progetto tramite sovversione. Soprattutto perché qualcuno potrebbe modificarli in qualche modo strano. Una buona pagina nella documentazione del progetto è un'idea molto migliore. Il nostro progetto ha anche molti moduli e una configurazione complessa. Abbiamo impostato una pagina di confluenza che descrive come iniziare con il progetto su ogni IDE populer: IntelliJ, Eclipse, NetBeans. Un file README in Subversion contiene le stesse informazioni.


31
Non posso essere d'accordo. In base alla mia esperienza, è bene controllare questi file per rendere il checkout il più semplice possibile. Qualcuno potrebbe cambiarli in qualche modo strano? Qualcuno potrebbe cambiare il tuo codice in qualche modo strano ...
Arne Deutsch

Arne, dovresti renderla una risposta, non un commento.
amarillion

5
I file di progetto per qualsiasi IDE in realtà non fanno parte di alcun progetto - se vuoi distribuirli - vai avanti - allegali all'articolo che ho citato. In genere tutti i membri di un team possono modificare i file nel repository, ma non tutti possono allegare nuovi file a nodi di documentazione importanti, ecc. È molto facile per qualcuno dimenticare di ignorare il percorso di classe e i file di progetto e di eseguirne il commit quando non dovrebbe. Anche se li tieni in sovversione, dovresti certamente tenerli da qualche parte sul lato ...
Bozhidar Batsov

8
-1, non potrei essere più in disaccordo. Le impostazioni dei progetti sono una parte cruciale del lavoro quotidiano con un progetto. Gli svantaggi del controllo accidentale di impostazioni errate sono molto inferiori ai vantaggi di mantenere automaticamente tutti aggiornati. Dopotutto, puoi sempre tornare facilmente alle versioni precedenti.
Michael Borgwardt

7
Tutti hanno diritto a un'opinione. È un dato di fatto che non creerei mai un progetto basandosi sul sistema di progetto di Eclipse (o qualsiasi altro IDE) in primo luogo ... Maven è lo strumento di comprensione del progetto definitivo e rende obsolete le configurazioni specifiche dell'IDE. Tuttavia, è improbabile che il tempo per notare che qualcosa non vada nelle impostazioni correnti e tornare alla revisione precedente differirà dal momento in cui regolare le nuove impostazioni da soli. Almeno nella mia azienda tutti i membri del team ricevono una notifica via e-mail se è necessario un intervento da parte dell'utente dopo modifiche più grandi.
Bozhidar Batsov

10

Voto no, ma è perché generalmente genererei questi file da Maven


m2e fa di più ma non tutto per te
Junchen Liu

6

Nella mia esperienza, escludendo i casi limitati in cui sono coinvolte impostazioni puramente locali, tutto dovrebbe essere nel controllo del codice sorgente. La legge del controllo del codice sorgente è che tutto ciò che viene inserito dovrebbe funzionare da coloro che si ritirano. Sfortunatamente, eclipse spesso fa sì che cose come questa siano in .classpath:

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

Quindi sul mio Mac funziona, e forse qualcuno su un Mac ha lo stesso JRE, ma questo non funzionerà per nessun altro.

Inoltre, non c'è un modo semplice per aggirare questo problema. Eclipse lo aggiungerà sempre. VOGLIO avere il file .classpath lì, perché ci sono alcuni JAR di terze parti nella nostra cartella lib in cui ci interessa il controllo delle versioni, quindi li lasciamo lì in modo che i nuovi sviluppatori non debbano averli . Stiamo passando a un sistema gestito, ma abbiamo ancora controllato + dipendenze non gestite. Ciò significa che tutti gli sviluppatori devono solo assicurarsi che due directory siano nelle loro .classpaths. Ma è meglio che dover aggiustare il tuo JRE ogni singola volta che tiri e fai un cambiamento nel tuo .classpath ogni singola volta che effettui il commit.

Eclipse fa altre cose carine per te però. Il file .project sarà solitamente lo stesso in tutte le istanze, quindi includilo. Ma la cosa migliore del controllo del codice sorgente per eclipse sono le impostazioni di Esegui configurazioni. Nella scheda "Comune" nella finestra di dialogo Esegui configurazioni, salva le configurazioni in modo che appaiano ai tuoi colleghi negli elenchi dei preferiti per Debug ed Esegui. Per me, un sacco di .launchfile vanno nella .settingsdirectory, quindi possiamo usarli tutti.

Quindi dico: la .settingsdirectory entra nel controllo del codice sorgente per le configurazioni di avvio (tranne * .prefs)

.classpath resta fuori

.project entra.


È questo il caso anche quando si utilizzano ambienti di esecuzione per JRE / JVM?
Mr_and_Mrs_D

5

Vorrei archiviare questi file per rendere più semplice possibile l'avvio per i nuovi utenti. Nella migliore delle ipotesi l'utente dovrebbe controllare il progetto e dovrebbe essere in grado di eseguirlo senza ulteriori conoscenze. Per questi file le regole sono le stesse degli altri file del progetto: gestiscili con cura. Non dovresti inserire percorsi assoluti nel codice sorgente, non dovresti nemmeno nei file di configurazione.

Se i file vengono archiviati in modo che il progetto venga eseguito da zero, non dovrebbero esserci molte forze per modificarli.


5

Ti consiglio di controllare i file in subversion SE non contengono percorsi assoluti e altri dati che li legherebbero direttamente all'ambiente di un singolo sviluppatore.

Se i file contengono percorsi assoluti e simili, un README sarebbe una scelta migliore.


2

Sì, registrali sicuramente, ma assicurati di documentare eventuali dipendenze del percorso ed evitare percorsi assoluti se possibile.

Se non li controlli, chiunque controlli il progetto dovrà ricreare tutte quelle impostazioni, il che è fastidioso e potenzialmente soggetto a errori.

Alcune configurazioni complesse possono essere gestite meglio da uno script per generare questi file, ma di solito è meglio archiviarli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.