2009-01-10 16 views
2

Je vais utiliser Apache Ant et Apache Ivy pour construire une application web qui est déployée sur une instance Tomcat locale (pendant le développement). J'ai quelques questions:Apache Ant + Ivy construction d'une application web qui est déployée sur un Tomcat local

  1. Je veux saisir la plupart de mes dépendances à partir des dépôts Maven2 qui fonctionne très bien, mais pour le servlet JAR je voudrais utiliser l'un Tomcat fournit. Y a-t-il un moyen de faire ça en utilisant Ivy? Et que pensez-vous de le faire?
  2. Je télécharge le JAR Ivy en utilisant Ant pour "l'installer automatiquement" dans ~/.ivy2/jar/ivy.jar et j'ai le cache Ivy à son emplacement par défaut ~/.ivy2/cache. Je garde exprès ces deux emplacements en dehors du répertoire du projet. Bonne idée?
  3. Avez-vous un exemple d'utilisation de Ant pour le fichier de construction, Ivy pour résoudre les dépendances, compiler un fichier WAR et le déployer vers une installation Tomcat locale (pour le moment)? Je cherche quelque chose à avoir comme une meilleure pratique que je peux ensuite modifier plus loin.
  4. J'ai utilisé quelques exemples sur le site web Ivy et les ai modifiés. Y a-t-il quelque chose que je devrais changer? Le fichier de construction peut être vu à http://pastebin.com/f7b34abc2, car j'ai eu des problèmes en collant le code XML ici.

(S'il vous plaît noter que je suis pas la recherche de la suggestion que je devrais utiliser Maven2, même si la suggestion est bien intentionnée.)

Répondre

2

Lors de l'exécution tomcat utilisera ses propres loin comme son classloader exclura tout pot contenant javax.servlet.Servlet. Si vous avez vraiment besoin de le compiler, vous devrez le faire dans le script ant, et le copier ou le référencer dans le classpath de la compilation. D'autre part, le téléchargement de lierre à la demande est une bonne idée car cela empêchera de vérifier le fichier ivy dans le projet scm repo comme je l'ai fait dans le passé, que vous le téléchargiez dans le répertoire du projet ou chez l'utilisateur. est une question de préférence personnelle. D'autre part, le cache ivy doit être partagé avec d'autres projets afin que le répertoire d'accueil de l'utilisateur soit un bon emplacement.

Construire le fichier de guerre n'est pas différent une fois que vous avez fait ivy: récupérer comme les fichiers jar requis seront locaux au projet, utilisez simplement la tâche de guerre des fourmis pour créer la guerre comme d'habitude. C'est un avantage pour ivy, qu'une fois que les jars sont téléchargés, il n'a plus rien à faire dans la construction et vous pouvez simplement utiliser ant pour compiler et empaqueter votre projet. Si vous jetez un coup d'œil à votre fichier de construction, vous avez l'air parfaitement sain.

Espérons que cela aide.

+0

Merci pour votre réponse! Ça aide beaucoup. Ensuite, j'utiliserai le fichier api de servlet disponible dans les dépôts Maven2 pour la compilation car Tomcat utilisera le sien quand même. C'était vraiment la partie la plus difficile jusqu'ici, heureux que vous ayez fait la lumière là-dessus! :-) –