IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Maven Java Discussion :

maven-resources-plugin : goal resources-copy


Sujet :

Maven Java

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 32
    Points : 21
    Points
    21
    Par défaut maven-resources-plugin : goal resources-copy
    Bonjour à tous,

    Je veux faire une copie de certaines ressources vers un dossier particulier. J'utilise donc le plugin maven-resources-plugin et son goal resources-copy.
    J'obtiens les messages d'erreur:
    Specify the following: outputDirectory puis specify the following: resources.
    Pourtant sur un autre plugin j'utilise exactement les mêmes chemins pour définir outputDirectory et directory sans avoir d'erreurs.
    Voici la description de mon plugin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
        <plugin>
    	<artifactId>maven-resources-plugin</artifactId>
    	<version>2.4.3</version>
    	<executions>
    		<execution>
    		   <id>copy-resources</id>
    			<goals>
    				<goal>copy-resources</goal>
    			</goals>
    			<configuration>
    			   <resources>          
    			    <resource>												
    				<directory>${basedir}/src/main/resources</directory>
    				<filtering>true</filtering>
    			    </resource>
    			   </resources>
                              <outputDirectory>C:\projet\resources</outputDirectory>
    			</configuration>            
    		</execution>
    	    </executions>
      </plugin>
    Quelqu'un a-t-il une idée pour ce problème?
    Merci;

  2. #2
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 32
    Points : 21
    Points
    21
    Par défaut plugin-assembly
    Bonjour!

    Je vois que ma question n'inspire personne... Alors comment faites-vous des copies de fichiers avec maven en général?

    Je fais un assembly et j'exclue certains fichiers properties du .jar que je veux mettre dans un dossier juxtaposant (que je rajoute dans le classpath).

    L'exclusion: ca marche.
    La partie manquante est la copie des properties hors du .jar

  3. #3
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Hello,

    La description de ton plugin me parait correcte, à une exception près, qui est que tu ne définis pas la phase durant laquelle ton plugin doit être exécuté. Tu peux trouver un exemple sur le site du plugin, où ils le lient à la phase validate.
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 32
    Points : 21
    Points
    21
    Par défaut Erreur dans la doc?
    Bonjour à tous,

    Spécialement Romaintaz, merci d'avoir pris le temps de regarder mon problème.
    Effectivement je n'avais pas mis la phase. Je me disais que si je lançais juste ce plugin en ligne de commande je n'avais pas besoin de spécifier la phase.
    D'ailleurs est ce que c'est vrai?

    Mais le problème ne venait pas de là. Mise à part la phase, j'ai fait exactement ce qui est décrit dans le site de maven apache que tu as donné. Mais en faisant comme ça j'avais toujours une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Inside the definition for plugin 'maven-resources-plugin' specify the follow
    ing:
     
    <configuration>
      ...
      <outputDirectory>VALUE</outputDirectory>
    </configuration>.
     
    Inside the definition for plugin 'maven-resources-plugin' specify the follow
    ing:
     
    <configuration>
      ...
      <resources>VALUE</resources>
    </configuration>.
    Après pas mal de bidouillage et de questionnement metaphysique je suis arrivé à ça:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
        <plugin>
    	<artifactId>maven-resources-plugin</artifactId>
    	<version>2.4.3</version>
    	<configuration>
    			   <resources>          
    			    <resource>												
    				<directory>${basedir}/src/main/resources</directory>
    				<filtering>true</filtering>
    			    </resource>
    			   </resources>
                              <outputDirectory>C:\projet\resources</outputDirectory>
    	</configuration>            
    	<executions>
    		<execution>
    		   <id>copy-resources</id>
    			<phase>validate</phase>
    			<goals>
    				<goal>copy-resources</goal>
    			</goals>
     
    		</execution>
    	    </executions>
      </plugin>
    La différence est que la balise configuration n'est pas fille de la balise execution mais directement celle de la balise plugin.

    Et ça marche sans aucun soucis. Je ne dis pas que la documentation est fausse, peut-être que j'ai fait autre chose qui n'allait pas, néanmoins perdre autant de temps pour une balise... nom deuu dieu!

    Est ce que quelqu'un sait la logique derrière? Je note résolu mais si vous avez des idées n'hésitez pas.

  5. #5
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Bon effectivement, la phase n'est à déterminer que si tu veux que le plugin soit utilisé lors d'une exécution d'une commande maven standard (du genre mvn clean install). Si tu définis explicitement le nom du plugin dans ta commande Maven, alors c'est inutile.

    Concernant la configuration, ce tag peut effectivement être placé dans le noeud <plugin> ou <execution>.
    Je n'ai aucune certitude là-dessus, mais j'aurais tendance à dire que s'il est placé au niveau du <plugin>, alors c'est une configuration permanente du plugin. Si c'est au niveau d'<execution>, alors c'est une configuration propre à cette exécution-là. Or une execution doit être liée à une phase du cycle de vie de Maven. Si tu lances manuellement ton plugin, je pense que la <configuration> dans <execution> n'est pas lue, ce qui était ton cas.
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 32
    Points : 21
    Points
    21
    Par défaut Sous sujet
    Bonjour,

    Ok, ça explique pourquoi j'ai eu par le passé des erreurs avec mes plugins car je les essaie toujours en ligne de commande.
    Certains fonctionnaient, d'autres non et sans que je comprenne les raisons.
    Mais ça me pose un problème de bonnes pratiques.

    J'ai fait un profil dans le pom avec 2 plugins: maven-assembly-plugin et donc maven-resources-plugin pour utiliser le goal copy-resources.

    Je comptais faire un .bat avec des appels vers ces 2 plugins afin d'avoir dans un dossier:
    - le jar de l'assemblage
    - certains fichiers properties externes au jar.

    Le plugin assembly utilise le maven-resources-plugin.

    Si je renseigne la balise configuration de maven-resources-plugin comme fille de la balise plugin, l'assembly ne fonctionne pas. J'ai un message build error
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Error configuring: org.apache.maven.plugins:maven-resources-plugin. Reaso
    n: ERROR: Cannot override read-only parameter: resources in goal: resources:resources
    Mais le goal copy-resources fonctionne.

    Si je mets la configuration (et donc la définition des resources) comme fille de l'execution de copy-resources, le plugin assembly fonctionne mais je retombe sur mon problème initiale: copy-resources demande les resources et le outputDirectory.

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 32
    Points : 21
    Points
    21
    Par défaut Bonjour tout le monde
    Comment faire en sorte que mon plugin assembly n'utilise pas le plugin resources que j'ai spécifié dans le profile? Ainsi je n'aurai pas de problème de directory de resources en effectuant le plugin assembly

  8. #8
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 32
    Points : 21
    Points
    21
    Par défaut Hello!
    Please! J'aurais bien voulu avoir une discussion la dessus. Je pense que c'est un sujet qui peut aider par la suite d'autre personnes...

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 32
    Points : 21
    Points
    21
    Par défaut assembly gère les copies
    Je poste une solution pour l'utilisation du plugin assembly avec copie des ressources et des dependances.
    Il ne faut surtout pas lancer les commandes sur les autres plugins mais laisser le plugin assembly gérer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    <build>
      <plugins>
    	<plugin>
      	   <artifactId>maven-assembly-plugin</artifactId>
    	   <version>2.2-beta-5</version>
    	   <configuration>
    	     <descriptors>
    		<descriptor>src/main/assembly/assembly.xml</descriptor>
    	     </descriptors>
    	     <archive>
    		<manifest>
    		   <mainClass>myMainClass</mainClass>
    		   <addClasspath>true</addClasspath>
    		   <classpathPrefix>lib/</classpathPrefix>
    		</manifest>
    		<manifestEntries>
    		    <Implementation-Build>${buildNumber}</Implementation-Build>
    		    <Class-Path>${autreClassPath}</Class-Path>	
    		</manifestEntries>
    	      </archive>
    	      <outputDirectory>C:\projet\</outputDirectory>				
    	     </configuration>	
    	</plugin>		
    	<plugin>
           	   <groupId>org.apache.maven.plugins</groupId>
    	   <artifactId>maven-dependency-plugin</artifactId>
    	   <version>2.1</version>
    	   <executions>
    	        <execution>
    	        <id>copy-dependencies</id>
    		<phase>package</phase>
    		<goals>
    		    <goal>copy-dependencies</goal>
    		</goals>
    	        <configuration>
       	         <outputDirectory>C:\projet\lib</outputDirectory>
    	         <stripVersion>true</stripVersion>
     	         <excludeArtifactIds>ArtifactId1,ArtifactId2,
                                       ArtifactId3</excludeArtifactIds>
    	         <includeScope>runtime</includeScope>							    
                     <overWriteReleases>false</overWriteReleases>
                     <overWriteSnapshots>false</overWriteSnapshots>
    	         <overWriteIfNewer>true</overWriteIfNewer>
      	        </configuration>
    	     </execution>
    	    </executions>
    	   </plugin>
     
               <plugin>
    		<artifactId>maven-resources-plugin</artifactId>
    		<version>2.4.3</version>
    		<executions>
    	  	    <execution>
    		    <id>copy-resources</id>
    		    <phase>package</phase>
    			<goals>
    		  	     <goal>copy-resources</goal>
    			</goals>	
    			<configuration> 
    			      <outputDirectory>C:\projet\${autreClassPath}
                                  </outputDirectory>									      
                                  <resources> 
                                    <resource>											     
                                    <directory>${basedir}/src/main/resources</directory> 
    				<filtering>true</filtering> 
    				<includes>
    				    <include>file1.xml</include>
    				    <include>file2.properties</include>
    				</includes>
    				</resource>
    				</resources> 
    			</configuration> 
    			</execution>
    			</executions>
    		</plugin>					
    	</plugins>
    </build>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Maven resources plugin++
    Par ThomasEscolan dans le forum Maven
    Réponses: 5
    Dernier message: 06/06/2012, 11h43
  2. Réponses: 2
    Dernier message: 23/04/2012, 14h13
  3. maven-eclipse-plugin : goal eclipse
    Par zomurn dans le forum Maven
    Réponses: 1
    Dernier message: 22/07/2010, 17h05
  4. Réponses: 10
    Dernier message: 24/04/2009, 10h40
  5. [Checkstyle] [Maven] unable to find resource 'VM_global_library.vm' in any resource loader.
    Par Rambler dans le forum Qualimétrie
    Réponses: 2
    Dernier message: 16/05/2008, 14h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo