web-dev-qa-db-fra.com

Java project: le fichier .classpath .project doit-il être validé dans le référentiel?

Dois-je archiver mes fichiers .project et .classpath?

Mon ami m'a dit que je ne devais archiver que les fichiers .Java et le build.xml pour garantir la portabilité. Il a déclaré: ".classpath vous fera beaucoup moins de portabilité sur un environnement différent. .Project est entièrement votre paramètre Eclipse local"

Je suis d'accord avec lui, mais en partie.

- Ne pas archiver le fichier .project rendra mon développement moins efficace (je ne peux pas simplement "importer" un code de projet depuis un répertoire)

- Ne pas archiver le fichier .classpath me semble OK (?) Si mon build.xml est écrit avec soin.

Quelqu'un veut-il partager son expérience ici?

52
sean

Il n'y a rien de mal à s'enregistrer .project et .classpath. Je le ferais, si votre build.xml n'est pas en mesure de créer les deux fichiers pour vous. Comme vous l'avez dit, il est inconfortable de manquer ces fichiers lorsque vous essayez de créer un nouvel espace de travail Eclipse.

Avant de vous enregistrer .classpath vous devez être sûr qu'il n'y a pas de chemin absolu. Convertissez-le en un relatif avec un éditeur de texte.

Edit: Ou encore mieux, utilisez des variables de chemin de classe Eclipse dans vos chemins par ailleurs absolus, comme @ taylor-leese a commenté.

25
tangens

Une chose que je voudrais mettre en garde contre l'archivage du fichier .classpath est de vous assurer que vous ne référencez pas les fichiers en dehors de votre projet. Eclipse stocke l'emplacement de ces fichiers avec un chemin de fichier complet, et vous devez vous assurer que les autres développeurs ont ces fichiers exactement au même endroit.

10
MikeTheReader

La question clé avec tous ces fichiers est "peuvent-ils être reproduits automatiquement?" Sinon, vérifiez-les dans le contrôle de source.

Dans ce cas, je dirais "oui", à moins que vous n'utilisiez maven, qui a m2Eclipse et le plugin Eclipse pour les générer pour vous.

7
Dominic Mitchell

Pour mes 2 cents, je dirais que c'est une mauvaise pratique. Les projets ne doivent pas être liés à un IDE, et en particulier ne doivent pas être liés à une version spécifique d'un IDE.

L'archivage des fichiers de configuration Eclipse peut bien fonctionner pour des projets plus simples et à court terme. Pour les projets plus importants qui sont développés sur plusieurs années, cela entraînera généralement plus de tracas, comme IDE changent, et les fichiers de configuration du projet ne le font pas. Imaginez simplement que vous archiviez une branche vieille de 2 ans avec Eclipse 2.0 fichiers de configuration dans Eclipse 4.3 avec quelques bibliothèques personnalisées et intégration m2e ... Pas du tout amusant ...

6
Nick G.

Je ne connais pas vraiment les fichiers de préférences d'Eclipse, mais avec IntelliJ, ces fichiers sont des agnostiques du système d'exploitation, ce qui signifie qu'ils ne ruineront pas votre portabilité. Sauf si vous définissez des bibliothèques avec un chemin d'accès complet à votre système (ce serait assez dangereux/stupide).

Lorsque vous partagez des préférences, vous êtes sûr que tout le monde travaillera avec les mêmes conditions sur le projet (configuration des plugins, encodage, profils [pour intelliJ]) ce qui peut vraiment être une bonne chose.

Cela ne me dérange pas lorsque certains fichiers Eclipse sont ici, et je pense que cela ne devrait pas/ne dérange pas vraiment les autres développeurs lorsque certains fichiers cachés sont juste là.

3
Colin Hebert

Nous archivons .project et .classpath. Avec ProjectSet, cela nous permet de vérifier des espaces de travail complexes avec un seul "Import Team ProjectSet"

3

Ne pas archiver le fichier .project rendra mon développement moins efficace (je ne peux pas simplement "importer" un code de projet depuis un répertoire)

pour ce problème, vous pouvez choisir de créer un nouveau projet et importer la source existante.

un problème avec IDE des fichiers spécifiques comme .project est que d'autres développeurs peuvent vouloir utiliser un autre IDE développez le projet, donc ils peuvent ajouter un autre type de projet) fichiers. cela rendra votre repo en désordre.

2
mhshams

Je préférerais archiver .project et .classpath.

Cela serait utile lorsque ce projet est partagé par plusieurs développeurs. Il devient facile et plus rapide à configurer l'environnement de développement en l'important simplement en tant que projet existant sur n'importe quel système utilisant Eclipse .

Seule la prudence doit être prise ici, car les chemins de classe sont relatifs au projet.

1
YoK

J'ai souvent un questionnement similaire, plus général. Le problème est essentiellement:

  • pour quels fichiers je m'engage moi ?
  • quels fichiers dois-je valider pour les autres ?
  • → Comment combiner les deux objectifs du "versionning"?

J'ai proposé d'en discuter , vous pouvez donc trouver plus de détails sur le problème, ainsi que des solutions intéressantes :)


Celui que je préfère est l'utilisation de git submodule: garder votre .project fichiers etc. dans un dépôt de commit privé. Et transformez votre production finale, pure et essentielle src en une pépite submodule soignée: un dépôt public.

project/ # root module
|   .git # private repo
|   .project
|   .classpath
|   momsNumber.txt
+---src/     # submodule
|   |   .git # public repo
|   |   main.Java
|   +---package/
|   |   |    Etc.Java

Voir quand même.

1
iago-lito

Il n'y a pas de problème d'archivage des fichiers .classpath et .project dans le référentiel. Il aidera les développeurs qui utilisent Eclipse à aller plus vite.

Avertissement: assurez-vous que votre fichier .classpath ne fait référence qu'à des artefacts qui ont soit été archivés dans le référentiel avec le projet ou peuvent être obtenus automatiquement (tels que des artefacts maven).

0
Eugene Ryzhikov