![](/img/trans.png)
[英]ERROR: Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy 405,
[英]Maven error with multiple executions in maven-deploy-plugin
我找到了這個不錯的食譜 ,想用它在我們的存儲庫中部署一些第三方文件
命令行上的調用是
mvn -P deploy-libs
如果我對一個文件執行此操作,它將完全按預期工作
<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>
如果我在多個執行中使用一個執行塊,它將無法正常工作。 這是錯誤,還是這是預期的行為?
<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>
我得到的錯誤是:
[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
有任何想法嗎?
發生這種情況的原因是,當像您一樣從命令行調用插件時,它沒有與之關聯的階段或執行。 這意味着它將選擇未命名的執行配置,即執行塊外部的配置。
如果您確實要運行多個執行,請將它們綁定到一個階段,然后調用該階段。 在這種情況下,每個執行將以其自己的配置運行。
真正未解決的問題是,為什么要使用deploy-file部署一堆這樣的東西? 如果是第三方的東西,您應該得到一個像Nexus這樣的倉庫管理器,並將它們上載一次到倉庫中,以供整個團隊使用。
要一次完成所有部署(如Boris所述),您可以添加:
<個人資料>
<個人資料>
<id> MyId1 </ id>
<activation> <property> DeployAll </ property> </ activation>
...
</ profiles>
<個人資料>
<id> MyId2 </ id>
<activation> <property> DeployAll </ property> </ activation>
...
然后用
mvn -DDeployAll
當然,這是一個錯誤。 Maven插件不應該以這種方式工作。
這有點冗長,但可能會有所幫助:
<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>
您可以使用以下命令運行它:
mvn -P deploy-j-interop deploy-j-interopdeps deploy-jcifs
我想Maven也會嘗試執行默認執行,其中未指定<file>
。 通常,最好在pluginManagement中配置插件,然后將不同的執行顯式綁定到特定階段。
嘗試在默認插件配置中放置一個明確的''和''元素。 您可以在其中放入垃圾,以查看是否執行了默認執行,如果執行了,請將其中一個執行設為默認。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.