2009-03-16 9 views
0

j'ai trouvé this nice recipe et que vous voulez l'utiliser pour déployer des fichiers 3e partie dans notre dépôterreur Maven avec plusieurs exécutions dans maven-deploy-plugin

L'appel sur la ligne de commande est

mvn -P deploy-libs 

Si je fais cela pour un fichier il fonctionne exactement comme prévu

<profiles> 
    <profile> 
     <id>deploy-libs</id> 
     <build> 
      <defaultGoal>deploy:deploy-file</defaultGoal> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-deploy-plugin</artifactId> 
        <version>2.4</version> 
        <goals> 
         <goal>deploy-file</goal> 
        </goals> 
        <configuration> 
         <repositoryId>openscada-external</repositoryId> 
         <url>${openscada.distrib.repository}</url> 
         <file>../openscada_opc_dcom/lib/j-interop.jar</file> 
         <pomFile>../openscada_opc_dcom/lib/j-interop.pom</pomFile> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

Si j'utilise un bloc d'exécution avec de multiples exécution s, ça ne marche pas. Est-ce un bug, ou est ce comportement prévu?

<profiles> 
    <profile> 
     <id>deploy-libs</id> 
     <build> 
      <defaultGoal>deploy:deploy-file</defaultGoal> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-deploy-plugin</artifactId> 
        <version>2.4</version> 
        <configuration> 
         <repositoryId>openscada-external</repositoryId> 
         <url>${openscada.distrib.repository}</url> 
        </configuration> 
        <executions> 
         <execution> 
          <id>j-interop</id> 
          <goals> 
           <goal>deploy-file</goal> 
          </goals> 
          <configuration> 
           <file>../openscada_opc_dcom/lib/j-interop.jar</file> 
           <pomFile>../openscada_opc_dcom/lib/j-interop.pom</pomFile> 
          </configuration> 
         </execution> 
         <execution> 
          <id>j-interopdeps</id> 
          <goals> 
           <goal>deploy-file</goal> 
          </goals> 
          <configuration> 
           <file>../openscada_opc_dcom/lib/j-interopdeps.jar</file> 
           <pomFile>../openscada_opc_dcom/lib/j-interopdeps.pom</pomFile> 
          </configuration> 
         </execution> 
         <execution> 
          <id>jcifs</id> 
          <goals> 
           <goal>deploy-file</goal> 
          </goals> 
          <configuration> 
           <file>../openscada_opc_dcom/lib/jcifs-1.2.9.jar</file> 
           <pomFile>../openscada_opc_dcom/lib/jcifs-1.2.9.pom</pomFile> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

L'erreur que je reçois est:

[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] One or more required plugin parameters are invalid/missing for 'deploy:deploy-file' 

[0] Inside the definition for plugin 'maven-deploy-plugin' specify the following: 

<configuration> 
    ... 
    <file>VALUE</file> 
</configuration> 

-OR- 

on the command line, specify: '-Dfile=VALUE' 

[INFO] ------------------------------------------------------------------------ 
[INFO] Trace 
org.apache.maven.lifecycle.LifecycleExecutionException: Error configuring: org.apache.maven.plugins:maven-deploy-plugin. Reason: Invalid or missing parameters: [Mojo parameter [name: 'file'; alias: 'null']] for mojo: org.apache.maven.plugins:maven-deploy-plugin:2.4:deploy-file 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:587) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:512) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:482) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:330) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:227) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:142) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:287) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 
    at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 
Caused by: org.apache.maven.plugin.PluginParameterException: Error configuring: org.apache.maven.plugins:maven-deploy-plugin. Reason: Invalid or missing parameters: [Mojo parameter [name: 'file'; alias: 'null']] for mojo: org.apache.maven.plugins:maven-deploy-plugin:2.4:deploy-file 
    at org.apache.maven.plugin.DefaultPluginManager.checkRequiredParameters(DefaultPluginManager.java:1042) 
    at org.apache.maven.plugin.DefaultPluginManager.getConfiguredMojo(DefaultPluginManager.java:659) 
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:429) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:558) 
    ... 16 more 

Toutes les idées?

Répondre

0

C'est un peu bavard, mais peut aider:

<profiles> 
    <profile> 
    <id>deploy-j-interop</id> 
    <build> 
     <defaultGoal>deploy:deploy-file</defaultGoal> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-deploy-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
      <repositoryId>openscada-external</repositoryId> 
      <url>${openscada.distrib.repository}</url> 
      </configuration> 
      <executions> 
      <execution> 
       <id>j-interop</id> 
       <goals> 
       <goal>deploy-file</goal> 
       </goals> 
       <configuration> 
       <file>../openscada_opc_dcom/lib/j-interop.jar</file> 
       <pomFile>../openscada_opc_dcom/lib/j-interop.pom</pomFile> 
       </configuration> 
      </execution> 
      </executions> 
     </plugin> 
     </plugins> 
    </build> 
    </profile> 

    <profile> 
    <id>deploy-j-interopdeps</id> 
    <build> 
     <defaultGoal>deploy:deploy-file</defaultGoal> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-deploy-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
      <repositoryId>openscada-external</repositoryId> 
      <url>${openscada.distrib.repository}</url> 
      </configuration> 
      <executions> 
      <execution> 
       <id>j-interopdeps</id> 
       <goals> 
       <goal>deploy-file</goal> 
       </goals> 
       <configuration> 
       <file>../openscada_opc_dcom/lib/j-interopdeps.jar</file> 
       <pomFile>../openscada_opc_dcom/lib/j-interopdeps.pom</pomFile> 
       </configuration> 
      </execution> 
      </executions> 
     </plugin> 
     </plugins> 
    </build> 
    </profile> 

    <profile> 
    <id>deploy-jcifs</id> 
    <build> 
     <defaultGoal>deploy:deploy-file</defaultGoal> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-deploy-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
      <repositoryId>openscada-external</repositoryId> 
      <url>${openscada.distrib.repository}</url> 
      </configuration> 
      <executions> 
      <execution> 
       <id>jcifs</id> 
       <goals> 
       <goal>deploy-file</goal> 
       </goals> 
       <configuration> 
       <file>../openscada_opc_dcom/lib/jcifs-1.2.9.jar</file> 
       <pomFile>../openscada_opc_dcom/lib/jcifs-1.2.9.pom</pomFile> 
       </configuration> 
      </execution> 
      </executions> 
     </plugin> 
     </plugins> 
    </build> 
    </profile> 
</profiles> 

Vous courraient à l'aide de la commande:

mvn -P deploy-j-interop deploy-j-interopdeps deploy-jcifs 
+0

Je suppose que cela fonctionnerait, mais je veux spécifier un seul profil et pas chacun séparément. – Mauli

+0

Que diriez-vous d'essayer d'écrire votre propre plugin qui traitera de plusieurs fichiers? –

0

je suppose que maven tente d'exécuter aussi l'exécution par défaut, où <file> n'est pas spécifié. C'est généralement une bonne idée de configurer les plugins dans pluginManagement, et de lier explicitement les différentes exécutions à des phases spécifiques. Essayez de mettre un '' and '' explicite dans la configuration du plugin par défaut. Vous pouvez placer des ordures à l'intérieur, pour voir si l'exécution par défaut est exécutée, et si c'est le cas, faites une des exécutions par défaut.

6

La raison pour laquelle cela se produit est que lorsqu'un plugin est appelé depuis la ligne de commande comme vous l'avez fait, aucune phase ou exécution ne lui est associée. Cela signifie qu'il récupère la configuration d'exécution sans nom, qui est la configuration en dehors du bloc d'exécution.

Si vous voulez vraiment exécuter plusieurs exécutions, associez-les à une phase, puis appelez cette phase. Dans ce cas, chaque exécution s'exécutera avec sa propre configuration.

La vraie question non-posée ici est pourquoi vous utilisez déployer-fichier pour déployer un tas de choses comme ceci? Si c'est un logiciel tiers, vous devriez obtenir un gestionnaire de dépôt comme Nexus et les télécharger une fois dans un dépôt pour que toute votre équipe puisse les utiliser.

+0

Ceci devrait être la réponse acceptée. –

0

Pour faire toutes les déploie à la fois (comme décrit par Boris) vous pouvez ajouter:

<profil>
    <profils>
        < id> MyId1 </id >
        < activation> < propriété> deployall </property> </activation>
        ...
</profils>
< profil>
    < id> MyId2 </id>
    < activation> < propriété> DeployAll </propriété> </activation>
    ...

Et puis utilisez

mvn -DDeployAll

+0

Vous avez oublié l'élément 'name' sous' property'. –

0

Evidement, c'est un bug. Le plugin Maven n'est pas supposé fonctionner de cette manière.

Questions connexes