Comment automatiser le processus de génération Java pour les projets IntelliJ IDEA 11?

J’essaie de mettre en place un système d’continuous integration pour un projet Java sur lequel je travaille. Je prévois d’utiliser Jenkins ou un équivalent pour le front-end. Le projet Java est configuré pour utiliser IntelliJ IDEA IDE, version 11. Le problème est qu’il n’existe aucun moyen de générer des projets IntelliJ IDEA 11 à partir d’une interface de ligne de commande, ce qui permet de l’interfacer avec le CI frontal (Jenkins). .

J’ai étudié plusieurs solutions potentielles. Ils sont comme suit.

Solution potentielle n ° 1

Utilisez la fonctionnalité “Générer Ant Build” d’IntelliJ IDEA. Il y a 2 problèmes avec cette solution:

  1. Cela signifie que je devrais soit gérer les fichiers de fourmi générés, ainsi que les fichiers de configuration d’IntelliJ idea, ce que je ne veux pas faire, ou je devrais recréer par programme les fichiers de fourmi périodiquement ou à la volée, ce qui n’est pas faisable puisqu’il n’y a pas d’interface en ligne de commande pour cela non plus.
  2. Cela ne fonctionne même pas de toute façon. Le projet est assez complexe en ce sens qu’il existe des fichiers Java configurés pour être exclus et que les fichiers ant générés n’exécutent pas correctement l’exclusion. En outre, il semble que les dépendances ne sont même pas générées correctement. Une recherche (exhaustive) sur Google m’indique que cet utilitaire n’est même pas pris en charge par IntelliJ et que son utilisation devrait être “évitée”.

Solution potentielle n ° 2

Utilisez une application tierce pour générer dynamicment des fichiers de construction ant, à savoir ant-intellij-tasks . Quand j’ai vu ce projet, j’étais plutôt enthousiasmé, mais malheureusement, il semble qu’il n’ait pas été mis à jour depuis 2009 et qu’il ne fonctionne pas avec la nouvelle version d’IntelliJ IDEA. Je ne trouve aucune autre bibliothèque comme celle-ci qui soit à jour et qui fonctionne.

Quelques notes supplémentaires

Ce lien suggère que d’autres ont des problèmes similaires et souhaitent une interface de ligne de commande (le lien est la description d’un plugin recherché pour un concours – la source est IntelliJ IDEA eux-mêmes).

Quelqu’un d’autre a-t-il configuré l’automatisation de la construction à l’aide de cet ensemble d’outils? Comment l’avez-vous fait? La réponse que je recherche ne nécessite idéalement pas la gestion de fichiers de configuration supplémentaires et me permettrait de taper quelque chose sur la ligne de commande et de permettre la construction.

Convertir votre projet pour qu’il s’intègre à maven est plus facile que de personnaliser Maven pour qu’il fonctionne avec la structure de votre projet.

Bien que vous puissiez réaliser ce dernier type de projet, la plupart du temps, les gens ne conçoivent pas de la manière la plus propre possible leur projet et, une fois qu’ils ont adopté la présentation Maven, leur projet devient beaucoup plus gérable.

Si vous adaptez les bons modèles d’une présentation de projet maven par défaut, IDEA le lira automatiquement et le comprendra complètement – même en partageant le même résultat du compilateur que vous utilisez sur la ligne de commande de l’EDI. IDEA utilisera le fichier pom.xml comme fichier de configuration.

Vous ne pouvez pas faire cela avec Ant, car il s’agit d’un wrapper de processus de construction. Maven n’est pas seulement un mécanisme de gestion des dépendances – c’est une abstraction d’un projet qu’un IDE peut utiliser pour se configurer.

Vous pouvez utiliser TeamCity pour construire votre projet IntelliJ. Cela fonctionne très bien, est automatisé et il existe de nombreux plug-ins qui vous permettent d’exécuter des tâches en ligne de commande, des tâches ant, etc.

C’est l’un des stream de travail que j’utilise régulièrement.

TeamCity fonctionne comme un référentiel Ivy. vous n’avez donc pas besoin de configurer un artefact.

J’aime bien Maven. Tout dépend vraiment de vos besoins. Maven est génial tant que vous voulez faire les choses à sa façon – ce qui est un très bon stream de travail.

Pour mémoire, quelques projets IDE gèrent bien les projets Maven. IntelliJ fait un travail décent.