2014-06-26 2 views
1

utilisant maven-ombre-plugin Je suis en train de créer une structure de fichier de projet comme suit:ombre Maven copie WEB-INF

enter image description here

Le problème est que la configuration pom suivante ne crée pas la Répertoire WEB-INF.

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>2.3</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
        <configuration> 
         <filters> 
          <filter> 
           <artifact>*:*</artifact> 
           <excludes> 
            <exclude>META-INF/*.SF</exclude> 
            <exclude>META-INF/*.DSA</exclude> 
            <exclude>META-INF/*.RSA</exclude> 
           </excludes> 
          </filter> 
         </filters> 
         <createDependencyReducedPom>true</createDependencyReducedPom> 
         <transformers> 
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
           <mainClass>com.my.package.Main</mainClass> 
          </transformer> 
         </transformers> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

Fondamentalement, je besoin de copier mon fichier web.xml, les classes et les fichiers lib dans un répertoire appelé WEB-INF dans la racine du projet.

Mise à jour: DÉSOLÉ, j'ai copié le mauvais plugin de mon pom dans la question originale!

Mise à jour: Si j'ajoute l'empaquetage de la déclaration pom: <packaging>war</packaging> La structure de fichier WEB-INF est complétée selon l'OQ. Cependant, avec cette déclaration, le répertoire com ne contient plus mes paquets, donc la classe principale est introuvable.

Comment ça regarde avec le <packaging>war</packaging>:

enter image description here

Comment le résultat:

enter image description here

+0

On dirait que vous essayez de créer une archive WAR, pourquoi ne pas utiliser maven-guerre plugin à cet effet? – khmarbaise

+0

J'ai essayé le plugin maven-war. J'essaye de créer une guerre exécutable avec une classe principale. Toutefois, la classe principale ne peut pas être dans le package par défaut. Il DOIT être dans un paquet déclaré. – tarka

Répondre

0

plug-in maven-assembly permet beaucoup plus de flexibilité, il serait facile à réaliser en utilisant le plugin de montage


Voir

+0

Je ne suis pas familier avec maven-assembly-plugin. Ne semble pas avoir beaucoup de chance avec ça. – tarka

+0

son descripteur d'assemblage est assez simple, vous spécifiez le répertoire d'entrée et le répertoire de sortie à l'intérieur de l'assemblage, il s'assemble pour vous, vérifiez quelques exemples –

0

Il y a beaucoup de réponses possibles pour obtenir l'effet désiré avec Maven. Toutefois, en fonction de la mise à jour que j'ai donné j'ai trouvé que l'ajout du maven-antrun-plugin avec le résolu mon problème suivant:

<plugin> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>move-main-class</id> 
        <phase>compile</phase> 
        <configuration> 
         <tasks> 
          <copy todir="${project.build.directory}/${project.artifactId}"> 
           <fileset dir="${project.build.directory}/classes/"> 
           </fileset> 
          </copy> 
         </tasks> 
        </configuration> 
        <goals> 
         <goal>run</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin>