2009-11-11 10 views
3

Lors de la construction de mon projet EJB avec maven, maven s'attend à ce que ejb-jar.xml soit dans META-INF /. Toutefois; Je dois pouvoir le mettre dans le répertoire A/META-INF. Maven-ejb-plugin ne semble pas fournir de paramètre pour spécifier où se trouve ejb-jar.xml.Comment changer l'emplacement de ejb-jar.xml dans mon projet maven?

Pouvez-vous me diriger dans la bonne direction?

+0

Ceci est pour Maven 2, non? –

+0

Yep..retourant. – Jared

+0

C'était plus parce que Maven 1 a une propriété pour ça :) –

Répondre

2

En effet, le maven-ejb-plugin ne fournit aucun paramètre pour modifier l'emplacement du descripteur de déploiement qui devrait être disponible à META-INF/ejb-jar.xml (l'emplacement est codé en dur dans le EjbMojo) ou de la construction seront échouer au moment de l'emballage lors de la construction d'EJB 2.X (ce qui est logique).

Ainsi, une façon d'atteindre votre objectif serait d'utiliser les maven-antrun-plugin avant la phase d'emballage pour copier le contenu de directoryA (en supposant directoryA était dans un répertoire des ressources comme src/main/resources et a été copié à target/classes) à l'emplacement prévu (la racine de target/classes) et faire un peu de nettoyage en place, quelque chose comme ceci:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
    <execution> 
     <phase>prepare-package</phase> 
     <configuration> 
     <tasks> 
      <copy todir="${project.build.outputDirectory}"> 
      <fileset dir="${project.build.outputDirectory}/directoryA"/> 
      </copy> 
      <delete dir="${project.build.outputDirectory}/directoryA"/> 
     </tasks> 
     </configuration> 
     <goals> 
     <goal>run</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

Je ne trouve pas très propre, mais il fonctionne.

+0

J'ai fini par devoir utiliser cette méthode (même si je ne l'aime pas plus que vous.) A dû réarranger certains des appels (faire un répertoire d'abord, etc), mais l'idée de base a fonctionné. Merci. – Jared

-1

La propriété de configuration "outputDirectory" ne fonctionne-t-elle pas (http://maven.apache.org/plugins/maven-ejb-plugin/ejb-mojo.html#outputDirectory)? Je vois que cela a été suggéré dans l'exemple antrun mentionné plus haut; cependant, cette propriété de configuration est disponible dans le plugin ejb lui-même (voir le lien). Ou, dites-vous que vous voulez seulement que le fichier ejb-jar.xml soit déplacé?

+0

Non - le répertoire de sortie changera l'emplacement du fichier de sortie. J'ai besoin de changer l'emplacement du fichier INPUT (d'où provient le fichier, pas où il place la sortie lorsque la compilation est terminée). – Jared

1

Plugin look pour le ejb-jar.xml dans le build.outputdirectory/META-INF que je pouvais voir dans le fichier source Pligin static private String EJB_JAR_XML = "META-INF/ejb-jar.xml" ; Il est possible de copier ejb-xml pre- scrit en utilisant le plugin ressources ....

<plugin> 
<artifactId>maven-resources-plugin</artifactId> 
<version>2.3</version> 
<executions> 
    <execution> 
     <id>copy-resources</id> 
     <phase>validate</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${project.build.outputDirectory}/META-INF</outputDirectory> 
      <resources> 
       <resource> 
        <directory>${project.build.sourceDirectory}/META-INF</directory> 
       </resource> 
      </resources> 
     </configuration> 
    </execution> 
</executions> 

1

que je devais faire la même chose et ai eu à travailler en ajoutant simplement une ressource supplémentaire répertoire à la section «build» du POM (qui est en plus de l'emplacement par défaut de java/main/ressources):

<build> 
    <resources> 
     <resource> 
      <directory>${project.basedir}/directoryA</directory> 
     </resource> 
    </resources> 
... 
</build> 
Questions connexes