2010-03-09 13 views
2

J'ai un programme Java qui génère des classes Java pour mon application. Fondamentalement, il prend une spécification simple pour une classe et génère une forme spécialisée de beans Java . Je veux intégrer cela dans mon pom.xml Maven donc que si le fichier d'entrée est modifié, Maven génère automatiquement le nouveau fichier .java avant la phase de compilation de Maven.Comment spécifier une règle de dépendance dans Maven entre des fichiers de certains suffixes?

Je sais comment faire trivialement en make mais je n'ai rien trouvé dans le doc Maven avec cette fonctionnalité.

Répondre

1

Vous n'avez pas fourni beaucoup de détails sur votre processus de génération de code, mais vous pourriez peut-être invoquer simplement le générateur de code avec le exec-maven-plugin (voir Exemples section). La convention est de générer des sources dans ${project.build.directory}/generated-sources/<tool>. Puis ajoutez les sources générées avec le build-helper-plugin et son add-sources mojo. Liez chaque élément de la phase generate-sources.

Je vais montrer les choses build-assistant ci-dessous:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>add-mytool-sources</id> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>add-source</goal> 
      </goals> 
      <configuration> 
       <sources> 
       <source>${project.build.directory}/generated-sources/mytool</source> 
       </sources> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Vous pouvez aussi écrire un simple plugin pour envelopper votre générateur. Dans ce cas, jetez un oeil à la Guide to generating sources. PS: J'ai peut-être manqué quelque chose, il y a une sorte de décalage entre ma réponse et le titre de votre question.

+0

Mon programme prend un fichier .bean et génère un fichier .java: java BeanGenerator Foo.bean va générer un Foo.java donc je suis en train de trouver un mécanisme inMaven/ant qui me permet de spécifier cette relation si il sait que lorsque le .bean est plus récent que le .java, il a besoin pour exécuter cette comm et ligne. Ma frustration est que c'était trivial dans ye olde worlde faire mais ce n'est pas du tout évident comment faire cela Maven/fourmi. –

+0

@Guy Ok. Ensuite, la méthode suggérée fonctionnera (sauf qu'elle fonctionnerait systématiquement). –