Nous exécutons un grand projet avec plusieurs langages différents: Java, Python, PHP, SQL et Perl. Jusqu'à présent, les gens travaillaient dans leurs propres dépôts privés, mais nous voulons maintenant fusionner l'ensemble du projet dans un seul référentiel. La question qui se pose maintenant est la suivante: à quoi devrait ressembler la structure du répertoire? Devrions-nous avoir des répertoires séparés pour chaque langue, ou devrions-nous le séparer par composant/projet? Dans quelle mesure python/perl/java gère-t-il une mise en page de répertoire commune?Mise en page du répertoire source de langage mixte
Répondre
Mon expérience indique que ce genre de mise en page est mieux.
mylib/
src/
java/
python/
perl/
.../
bin/
java/
python/
perl/
stage/
dist/
src
est source, et est la seule chose vérifiée dans
bin
est où « compilation » se produit au cours de la construction et ne le réintègre pas.
stage
est l'endroit où vous copiez les choses lors de la construction afin de les préparer pour l'emballage
dist
est où vous placez les artefacts de construction
Je place le module/composant/bibliothèque en haut de la hiérarchie, car je construis chaque module séparément, et utilise un gestionnaire de dépendances pour les combiner si nécessaire.
Bien entendu, les conventions de dénomination varient. Mais j'ai trouvé cela pour fonctionner de manière plutôt satisfaisante.
Je pense que la meilleure chose à faire serait de faire en sorte que vos différents modules ne dépendent pas d'être dans le même répertoire (c'est-à-dire séparés par composant). Beaucoup de gens semblent avoir peur de cette idée, mais un bon ensemble de scripts de construction devrait être capable d'automatiser toute douleur.
L'objectif final serait de faciliter l'installation de l'infrastructure, puis de travailler très facilement sur un seul composant une fois l'environnement configuré.
(Il est important de noter que je viens des mondes Perl et CL, où nous installons des "modules" dans un emplacement global, comme ~/perl ou ~/.sbcl, plutôt que d'inclure chaque module avec chaque projet, comme Ce serait un problème de maintenance, mais ça ne finit pas par être le cas ... Avec un script qui met à jour régulièrement chaque module de votre dépôt git (ou CPAN), c'est vraiment la meilleure solution.)
Edit: une chose:
projets ont toujours des dépendances externes. Mes projets nécessitent Postgres et une installation Linux fonctionnelle. Il serait fou de combiner ceci avec le code de l'application dans le contrôle de version - mais un script pour tout installer sur un nouveau poste de travail est très utile. Je suppose que ce que j'essaie de dire, peut-être de façon indirecte, c'est que je ne pense pas que vous devriez traiter vos modules internes différemment des modules externes.
- 1. Protection du langage de script Script Code source
- 2. Mise en page du schéma d'interface utilisateur
- 3. Visual Studio, Intel Visual Fortran et Visual C/C++ compilation en langage mixte
- 4. Mise en route avec IL (langage intermédiaire)
- 5. mise en page du projet à l'aide Wicket
- 6. GridView Mise en page/sortie
- 7. Mise en page Dojo/Dijit - essayé d'ajouter une bannière en haut d'une mise en page existante
- 8. WPF mise en page du magasin en ressources
- 9. mise en page Fullscreen
- 10. Sécurité mixte en mode mixte SQL Server 2008?
- 11. Définition du motif du noeud text() de l'élément mixte complexe
- 12. Problème de mise en page Android ScrollView
- 13. Portage moteur de mise en page webkit
- 14. Implémentation de mise en page forcée en C++
- 15. Traitement du langage naturel en Ruby
- 16. répertoire source de l'exécution personnalisée du compilateur Maven2 et répertoire cible
- 17. mise en page du référentiel pour les grands projets Maven
- 18. Mise en page fluide du texte dans Flex3
- 19. mise en page de l'application javaEE
- 20. Crystal reports Mise en page
- 21. Mise en page CSS compliqué
- 22. Mise en page Optimal algorithme
- 23. Mise en page XY JAVA
- 24. problème Blogger mise en page
- 25. Question de mise en page Myspace Myspace
- 26. mise en page de table HTML question
- 27. Blackberry - champs animation de mise en page
- 28. Moteurs de mise en page Windows Forms
- 29. Problème de mise en page WPF
- 30. problème de mise en page Flex
Dans cette présentation source, le niveau du module est-il supérieur ou inférieur au niveau src /? C'est à dire. mylib/src/java ou/src/java/mylib? –
Je garde tous mes modules séparés, car je les construis séparément et utilise un gestionnaire de dépendances pour les combiner. Pour cette raison, je ferais mylib/src/java. – Jared
Modifié pour refléter la question de la librairie. – Jared