2009-11-03 18 views
1

J'ai créé une application web en utilisant maven2 archetype dans netbeans 6.7. Lorsque je fais une construction normale (en supprimant toute la configuration du plugin), il copie tous les fichiers requis, y compris les dossiers '_svn'. Mais je ne veux pas ces fichiers, comment puis-je nettoyer les dossiers/fichiers _svn à partir du fichier * .war et du dossier cible éclaté qui contient le contenu du dossier 'src/main/webapp'?Comment nettoyer les dossiers/fichiers _svn du dossier 'src/main/webapp' quand maven2 crée un projet webapp dans netbeans 6.7?

T E S T S 
------------------------------------------------------- 
Running com.project.project.taglib.SSTest 
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec 

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

[war:war] 
Packaging webapp 
Assembling webapp[project-servlets] in 
[C:\ROOT\1utils\project\project-servlets\trunk\target\project-servlets] 
Processing war project 
Copying webapp resources[C:\ROOT\1utils\project\project-servlets\trunk\src\main\webapp] 
Webapp assembled in[735 msecs] 
Building war: C:\ROOT\1utils\project\project-servlets\trunk\target\project-servlets.war 
[install:install] 
Installing C:\ROOT\1utils\project\project-servlets\trunk\target\project-servlets.war 
to C:\LOCALREPO\.m2\com\project\project-servlets\1.0.0\project-servlets-1.0.0.war 

J'ai réussi à utiliser le filtrage des ressources en pom.xml pour filtrer les fichiers _svn, tout ce qui fonctionne parfaitement si je crée un fichier jar. Mais avec la guerre, après la phase TEST, il copie le contenu du dossier 'src/main/webapp' ([war: war]), je n'arrive pas à trouver un moyen de localiser quelle config/commande fait cela? est ce netbeans? c'est l'un des plug-ins que j'utilise? Voici la section build de mon pom.xml, l'aide sera très appréciée !!

<project> 
.. ... 
<build> 
<resources> 
<resource> 
    <directory>src/main/resources</directory> 
    <filtering>true</filtering> 
    <excludes> 
     <exclude>_svn/**/*</exclude> 
    </excludes> 
</resource> 
</resources> 
<testResources> 
<testResource> 
    <directory>src/test/resources</directory> 
    <filtering>true</filtering> 
    <excludes> 
     <exclude>_svn/**/*</exclude> 
    </excludes> 
</testResource> 
</testResources> 
<plugins> 
<plugin> 
<artifactId>maven-resources-plugin</artifactId> 
<version>2.4</version> 
<executions> 
    <execution> 
     <id>copy-resources</id> 
     <phase>validate</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
     <outputDirectory>${basedir}/target/project-servlets/WEB-INF</outputDirectory> 
     <resources> 
      <resource> 
       <directory>${basedir}/src/main/resources</directory> 
       <filtering>true</filtering> 
       <excludes> 
        <exclude>_svn/**/*</exclude> 
       </excludes> 
      </resource> 
     </resources> 
     </configuration> 
    </execution> 
</executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.0.2</version> 
    <configuration> 
     <verbose>true</verbose> 
     <source>1.5</source> 
     <target>1.5</target> 
    </configuration> 
</plugin> 
</plugins> 
<finalName>project-servlets</finalName> 
</build> 
.. 
.. 
</project> 

@Pascal Thivent - merci beaucoup pour la réponse. J'ai ajouté la configuration 'maven-war-plugin' et il a commencé à faire l'emballage deux fois !!

[war:war] Packaging webapp 
Assembling webapp[project-servlets] in [C:\ROOT\1utils\frg\project-servlets\trunk\target\project-servlets] 
Processing war project 
Copying webapp resources[C:\ROOT\1utils\frg\project-servlets\trunk\src\main\webapp] 
Webapp assembled in[391 msecs] 
Building war: C:\ROOT\1utils\frg\project-servlets\trunk\target\project-servlets.war [war:war] 
Packaging webapp 
Assembling webapp[project-servlets] in [C:\ROOT\1utils\frg\project-servlets\trunk\target\project-servlets] 
Dependency[Dependency {groupId=log4j, artifactId=log4j, version=1.2.8, type=jar}] has changed (was Dependency {groupId=log4j, artifactId=log4j, version=1.2.8, type=jar}). 
Dependency[Dependency {groupId=com.frg, artifactId=project, version=1.1.7, type=jar}] has changed (was Dependency {groupId=com.frg, artifactId=project, version=1.1.7, type=jar}). 
Dependency[Dependency {groupId=com.frg, artifactId=commons, version=1.0.3, type=jar}] has changed (was Dependency {groupId=com.frg, artifactId=commons, version=1.0.3, type=jar}). 
Dependency[Dependency {groupId=net.sourceforge.jtds, artifactId=jtds, version=1.2.2, type=jar}] has changed (was Dependency {groupId=net.sourceforge.jtds, artifactId=jtds, version=1.2.2, type=jar}). 
Processing war project 

Le fichier pom a maintenant la configuration suivante ..

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-war-plugin</artifactId> 
<executions> 
    <execution> 
     <id>war</id> 
     <phase>package</phase> 
     <goals><goal>war</goal></goals> 
     <configuration> 
      <webResources> 
      <resource> 
      <directory>src/main/webapp</directory> 
      <excludes> 
       <exclude>_svn/**/*</exclude> 
       <exclude>**/_svn/**</exclude> 
      </excludes> 
      </resource> 
      </webResources> 
     </configuration> 
    </execution> 
</executions> 
</plugin> 

Et je vois encore les dossiers _ svn dans les fichiers de guerre !! Cependant, après avoir changé les dossiers _ svn en dossiers .svn, je n'ai même pas besoin de filtrer les ressources !! Il ignore automatiquement les dossiers '.svn'. Je pense qu'il devrait y avoir un paramètre quelque part pour définir la préférence de '.svn' à '_svn'. Quoi qu'il en soit, cela résout mon problème initial, mais introduit un problème d'incompatibilité avec mes anciens projets .NET versionnés. :)

+0

Il ignore probablement ' .svn' car '.svn' est un dossier caché comparé à' _svn' qui ne l'est pas, pas parce qu'il reconnaît '.svn' comme dossier de contrôle de source. –

+0

Ma réponse initiale était partiellement incorrecte et je l'ai réparée. Mais je suggère toujours d'utiliser le schéma de nommage "standard" '.svn' au lieu de' _svn'. En ce qui concerne le problème de compatibilité descendante avec vos projets .NET, ne pouvez-vous pas les vérifier en utilisant '.svn'? –

+0

J'ai résolu le problème en utilisant SVN_ASP_DOT_NET_HACK. Dans l'invite de commande, je dois définir la valeur à vide pour m'assurer qu'il reconnaît .svn comme dossier de contrôle de version approprié et extraire une nouvelle copie. Donc tout fonctionne correctement côte à côte .. –

Répondre

2

(EDIT: Ma réponse initiale suggérait d'utiliser excludes dans webResources ce qui n'est pas correct. m fournir ci-dessous une configuration mise à jour du maven-war-plugin qui exclut vraiment _svn comme demandé par l'OP. Cela a été testé et fonctionne.)

... 
<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
     <warSourceExcludes> 
     **/_svn/** 
     </warSourceExcludes> 
    </configuration> 
    </plugin> 
    ... 
</plugins> 

Mais, je vous suggère vivement de configurer votre client de tortue utiliser .svn au lieu de _svn. Je ne peux pas trouver la référence mais je crois que maven utilise quelque chose d'équivalent à <exclude>**/.svn</exclude> en interne. J'ai un doute sur la déclaration précédente. Cependant, le fait d'utiliser .svn vous permet d'éviter toute configuration supplémentaire et rend ainsi les choses beaucoup plus simples.

+0

J'ai changé les dossiers _ svn en dossiers .svn, je n'ai même pas besoin de filtrer les ressources !! Il ignore automatiquement les dossiers '.svn'. –

+0

En effet, c'était mon point (et suggestion). En fait, je ne connaissais même pas certains outils utilisant autre chose que '.svn' ... –

+0

par défaut svn est configuré pour utiliser .svn mais nos projets d'édition VS2003 avaient des problèmes, donc nous sommes passés de .svn à _ svn. –