2008-10-09 4 views
15

J'ai beaucoup de code source Java qui nécessite un prétraitement personnalisé. Je voudrais m'en débarrasser, mais ce n'est pas faisable pour l'instant, donc je suis coincé avec ça. Étant donné que j'ai un problème malheureux qui n'aurait pas dû exister en premier lieu, comment le résoudre en utilisant maven?Prétraitement code source en tant que partie d'un maven construire

(Pour l'histoire complète, je remplace un système de construction basé sur python avec un système de construction python, donc une amélioration à la fois s'il vous plaît.La fixation du code source non standard est plus difficile, et viendra plus tard.)

Est-il possible en utilisant des plugins Maven existants pour modifier réellement les fichiers source pendant la compilation? Pour être clair, par prétraitement, je veux dire le prétraitement dans le même sens que l'antenne ou un compilateur C serait prétraiter le code, et par habitude, je veux dire qu'il est complètement propriétaire et ne ressemble à rien du tout comme C ou pré-traitement d'antenne.

Répondre

9

Ceci est quelque chose de très faisable. J'ai fait quelque chose de très similaire dans le passé.

Un exemple d'un projet de la mine, où je le plug-in antrun pour exécuter un programme externe pour traiter les sources:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <executions> 
     <execution> 
      <id>process-sources</id> 
      <phase>process-sources</phase> 
      <configuration> 
      <tasks> 
       <!-- Put the code to run the program here --> 
      </tasks> 
      </configuration> 
      <goals> 
      <goal>run</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

Notez le tag où j'indique la phase où cela est exécuté. La documentation pour les cycles de vie à Maven est here. Une autre option consiste à écrire votre propre plug-in Maven. C'est un peu plus complexe, mais c'est aussi faisable. Vous allez toujours le configurer de la même manière que ce que j'ai documenté ici.

+0

C'est très utile, merci. Je pense que la partie que je me bats avec est de savoir comment traiter le code à une copie de ce code, et ensuite maven compiler la copie au lieu de l'original. Je pense peut-être que j'ai besoin de mieux comprendre les bases de Maven. – izb

+0

-1: vous ne répondez pas à la question, mais fournissez simplement les moyens de l'atteindre. En d'autres termes, que mettez-vous dans les tâches? –

2

plugins Maven peuvent accrocher dans le processus de construction au moment Précompilation oui, comme pour savoir si tout ceux qui existent déjà vont aider, je ne sais pas.

J'ai écrit un plugin Maven, il y a quelques années dans le cadre d'un projet universitaire bien, et alors que la documentation était un peu défaut à l'époque, il était pas trop compliqué. Donc, vous pouvez vous lancer dans le vôtre, il devrait y avoir beaucoup de projets open source que vous pouvez extraire des idées ou du code (le nôtre était sous licence BSD par exemple ...)

Questions connexes