9
votes

Meilleur emplacement pour les fichiers ant build.xml?

Pour ceux d'entre vous qui utilisent des fourmis avec plusieurs projets, où mettez-vous les fichiers build.xml? En mettez-vous un dans chaque projet ou les mettez-vous dans un projet séparé contenant tous vos fichiers associés à vos fourmis?

La recommandation habituelle consiste à mettre un build.xml dans chaque projet. Mais cela a quelques inconvénients:

  • Il est difficile de réutiliser des objectifs communs dans plusieurs projets.

  • Parfois, vous voulez utiliser la fourmi pour exporter un projet à partir du contrôle de la source et le déployer. Évidemment, vous ne pouvez pas faire cela si le fichier de construction est dans le projet lui-même.

    Mais si vous les mettez tous dans un emplacement commun:

    • Les gens doivent être conscients de leur emplacement pour les utiliser; Ils ne peuvent pas simplement utiliser "fourmis" pour trouver le fichier du projet actuel.

    • Vous ne pouvez pas avoir différentes instructions de construction pour différentes branches du projet.

      Que faites-vous les gars?

      EDIT : Merci pour les bonnes suggestions jusqu'à présent. Aussi bien maven, ce ne sont pas des projets Java, et j'ai l'impression que Maven est seulement destiné à Java.

ant

2 commentaires

Bien que Maven soit principalement un outil de construction Java, il contient des plugins pour d'autres langues. Voir Stackoverflow.com/questions/1168960/Maven-for -Tutres-...


Maven peut construire de nombreuses langues; Ce n'est pas seulement pour Java.


5 Réponses :


1
votes

Ma règle ecoutetique est de mettre le fichier build.xml dans le répertoire sous lequel tous les fichiers sont référencés. En d'autres termes, aucun chemin relatif ne devrait commencer par "../". Là où je vis, cela signifie généralement la mettre dans le répertoire "coffre", qui a SRC, lib, construction, docs, etc. en dessous.

Faire cela rend les chemins beaucoup plus propre dans le fichier et cela rend évident comment construire le projet.

Où j'ai plusieurs projets qui doivent construire, je vais créer une build.xml distincte pour chaque projet et une build.xml central dans le répertoire tout le projet est dans qui appelle ces autres fichiers build.xml. Cela vous donne beaucoup de flexibilité avec très peu de travail.


0 commentaires

1
votes

Je m'attendrais à un Ant Construire le fichier à localiser en haut d'un projet (c'est déjà Une douleur nécessaire à regarder un fichier de construction pour "découvrir" comment construire le projet, donc si je dois la localiser en premier, cela me fera totalement fou). Maintenant, en ce qui concerne tous les inconvénients que vous avez mentionnés, je suis tenté de dire: pourquoi n'utilisez-vous pas Maven ?


0 commentaires

5
votes

Placez les fichiers de fourmis avec le projet. C'est la norme de facto et recommandée par le créateur de la fourmi. Je vais essayer d'aborder certaines des questions que vous avez soulevées:

  • La réutilisation des objectifs communes devrait être effectuée à l'aide de techniques telles que décrites par Eric Hatcher dans son livre Java Development avec Fourmi . Fondamentalement, vous extrayez toutes les points communs dans quelques fichiers de niveau supérieur que tous les autres fichiers de fourmis "hériter" de.

  • Utilisation de la fourmi pour exporter un projet de Source Control vous semble étrange, mais si vous voulez le faire, utilisez un fichier anti-fourmis différent :-) Vous pouvez créer une cible comme ant Export -DProject = FOO / BAR .

    Pour ant, je vous recommande de saisir ce livre - il a une tonne de techniques utiles.

    La vraie recommandation que je ferais cependant, c'est de supprimer la fourmi et de convertir à Maven - comme la Fondation du logiciel Apache a fait (ils entretiennent à la fois des fourmis et Maven).


0 commentaires

0
votes

La façon dont je l'ai fait est dans le passé (maintenant je viens d'utiliser maven):

  • avoir une build.xml à la racine de chaque projet
  • créer une build.xml Pour tous les projets et placez-le dans le coffre de mon référentiel
  • le buid.xml global a Tâches de paiement pour chaque projet. Je devine quand tu as mentionné Exporter du référentiel, vous effectivement signifiait importé.
  • le fichier de construction global également Définit les dépendances, le cas échéant
  • Vous pouvez mettre à jour des projets individuels en utilisant le fichier de construction individuel de chaque projet
  • Si vous avez des tâches communes définies, vous pouvez hériter d'un fichier de construction commun ainsi que de quelqu'un d'autre suggéré.

    On dirait que votre ensemble de projets pourrait être un bon candidat à la migration vers Maven, je me rends compte que ce n'est pas toujours possible, mais si vous avez le temps, vous voudrez peut-être examiner cela.


0 commentaires

2
votes

Si vous travaillez avec des projets indépendants, vous pouvez:

  • Mettez votre build.xml au niveau supérieur
  • Placez les définitions antennes communes (antlib) dans un autre projet (par exemple config)
  • Utilisez SVN: externes pour importer la définition commune d'AntLib (à partir de "Config") dans votre projet

    Modifier Le truc avec svn: externes est que si vous liez la tête de certains fichiers courants, il peut arriver qu'ils changent après quelques mois / années. Donc, chaque fois que vous balise, vous devriez changer le SVN: externes pour pointer vers une version correcte du projet fourni. Cela peut être pratique quand un projet doit être reconstruit des années après sa dernière construction.


2 commentaires

C'est la configuration exacte que nous utilisons. Je ne veux pas de copier et coller héritage partout pour des choses comme les objectifs de couverture du code. J'aurais dû payer à une révision spécifique, bien que cela n'ait pas été un gros problème.


où est le fichier build.xml?