Maven Fehler mit mehreren Hinrichtungen in maven-deploy-plugin
Fand ich dieses schöne Rezept und wollen es verwenden, um die Bereitstellung einige 3rd-party-Dateien in unser repository
Den Aufruf auf der Kommandozeile ist
mvn -P deploy-libs
Wenn ich dies für eine Datei es funktioniert 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 Richtblock mit mehreren Ausführungen, es funktioniert nicht. Ist das ein bug, 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>
Den Fehler den ich bekomme, 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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Grund, warum dieser geschieht, ist, dass wenn ein plugin aufgerufen wird, wird von der Befehlszeile aus wie du getan hast, es hat keine phase oder Ausführung zugeordnet. Dies bedeutet, es nimmt die Unbenannte Ausführung-Konfiguration, die ist die config außerhalb der Ausführung blockieren.
Wenn Sie wirklich wollen, zu laufen mehrere Ausführungen, die Sie binden, zu einer phase, und rufen Sie dann, die phase. In diesem Fall wird bei jeder Ausführung wird mit seiner eigenen Konfiguration.
Die echte ungestellte Frage hier ist, warum Sie sind das verwenden von "deploy" -Datei zum bereitstellen von ein paar Sachen wie diese? Wenn es 3rd-party-Zeug, sollte man sich ein repo-manager wie Nexus und laden Sie Sie einmal, um ein repository für Ihr ganzes team zu verwenden.
Dies ist ein bisschen verbose, aber vielleicht helfen:
Führen Sie es mit dem Befehl:
Ich denke, maven versucht, führen Sie auch die Standard-Ausführung, wo
<file>
ist nicht angegeben.Es ist normalerweise eine gute Idee, konfigurieren die plugins im pluginManagement, und explizit zu binden, der die verschiedenen Ausführungen zu bestimmten Phasen.
Versuchen, eine explizite " und " Elemente in den Standard-plugin-Konfiguration. Sie können garbage in, um zu sehen, ob die Standard-Ausführung ausgeführt werden, und wenn es das tut, wird einen der Hinrichtungen ein Standard.
Alles zu tun, der setzt auf einmal (wie beschrieben von Boris) Sie können hinzufügen:
Und verwenden Sie dann
name
element unterproperty
.Natürlich ist es ein bug. Maven-plugin soll nicht die Arbeit in dieser Weise.