2009-03-16 8 views
0

ich this nice recipe gefunden und möchte es verwenden, um einige 3rd-Party-Dateien in unserem RepositoryMaven Fehler mit mehreren Hinrichtungen in Maven-deploy-Plugin

Der Aufruf auf der Kommandozeile zu implementieren ist

mvn -P deploy-libs 

wenn ich dies tun für eine Datei funktioniert es genau wie beabsichtigt

<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> 

wenn ich einen Ausführungsblock mit mehreren Ausführungs verwenden s, es funktioniert nicht. Ist das ein Fehler oder ist das beabsichtigte Verhalten?

<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> 

Der Fehler, den ich bekommen ist:

[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 

Irgendwelche Ideen?

Antwort

0

Dies ist eine ausführliche wenig, aber helfen kann:

<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> 

Sie es mit dem Befehl ausführen würde:

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

Ich denke, das würde funktionieren, aber ich möchte nur ein Profil angeben und nicht jedes einzeln. – Mauli

+0

Was ist mit dem Versuch, ein eigenes Plugin zu schreiben, das sich mit mehreren Dateien befasst? –

0

Ich denke, Maven die Standardausführung auch auszuführen versucht, wo <file> nicht ist angegeben. Es ist normalerweise eine gute Idee, die Plugins in pluginManagement zu konfigurieren und die verschiedenen Ausführungen explizit an bestimmte Phasen zu binden.

Versuchen Sie, eine explizite '' und '' Elemente in der Standard-Plugin-Konfiguration zu setzen. Sie können Garbage in den Cache stellen, um zu sehen, ob die Standardausführung ausgeführt wird, und wenn dies der Fall ist, machen Sie eine der Ausführungen zu einem Standard.

6

Der Grund, warum dies passiert, ist, dass, wenn ein Plugin von der Befehlszeile aufgerufen wird, wie Sie getan haben, hat es keine Phase oder Ausführung damit verbunden. Dies bedeutet, dass es die unbenannte Ausführungskonfiguration annimmt, bei der es sich um die Konfiguration außerhalb des Ausführungsblocks handelt.

Wenn Sie wirklich mehrere Ausführungen ausführen möchten, binden Sie sie an eine Phase und rufen Sie dann diese Phase auf. In diesem Fall wird jede Ausführung mit einer eigenen Konfiguration ausgeführt.

Die eigentliche Frage hier ist warum Sie Deploy-Datei verwenden, um eine Menge von solchen Sachen zu deployen? Wenn es sich um 3rd-Party-Sachen handelt, sollten Sie einen Repo-Manager wie Nexus erhalten und diese einmal in ein Repository hochladen, damit Ihr gesamtes Team es verwenden kann.

+0

Dies sollte die akzeptierte Antwort sein. –

0

auf einmal alle entfaltet zu tun (wie von Boris beschrieben) Sie hinzufügen können:

<Profil>
    <Profile>
        < id> MyId1 </id >
        < Aktivierung> < property> deployall </property> </Aktivierung>
        ...
</profiles>
< Profil>
    < id> MyId2 </id>
    < Aktivierung> < Eigenschaft> DeployAll </Eigenschaft> </Aktivierung>     ...

Und dann verwenden

mvn -DDeployAll

+0

Sie haben 'name' Element unter' property' vergessen. –

0

Von cource ist es ein Bug. Das Maven-Plugin sollte nicht so funktionieren.

Verwandte Themen