首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven部署插件中多次执行的maven错误

Maven部署插件中多次执行的maven错误
EN

Stack Overflow用户
提问于 2009-03-16 11:00:02
回答 5查看 12.2K关注 0票数 0

我找到了这个不错的食谱,并希望使用它在我们的存储库中部署一些第三方文件。

命令行上的调用是

代码语言:javascript
复制
mvn -P deploy-libs

如果我为one文件执行此操作,它将完全按照预期工作。

代码语言:javascript
复制
<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>

如果我使用一个具有多个执行的执行块,它就不能工作。这是一个bug,还是这是有意的行为?

代码语言:javascript
复制
<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>

我得到的错误是:

代码语言:javascript
复制
[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

有什么想法吗?

EN

回答 5

Stack Overflow用户

发布于 2009-04-12 01:50:20

发生这种情况的原因是,当像您所做的那样从命令行调用插件时,它没有与其相关联的阶段或执行。这意味着它获取未命名的执行配置,这是执行块外部的配置。

如果您确实希望运行多个执行,请将它们绑定到一个阶段,然后调用该阶段。在这种情况下,每个执行都将使用自己的配置运行。

这里真正未问的问题是,为什么要使用部署文件来部署这样的东西呢?如果是第三方的东西,你应该找一个像尼克斯这样的回购经理,然后把它们上传到一个存储库,供整个团队使用。

票数 6
EN

Stack Overflow用户

发布于 2009-03-16 13:07:28

这有点冗长,但可能会有所帮助:

代码语言:javascript
复制
<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>

您可以使用以下命令运行它:

代码语言:javascript
复制
mvn -P deploy-j-interop deploy-j-interopdeps deploy-jcifs
票数 0
EN

Stack Overflow用户

发布于 2009-03-18 11:49:17

我猜maven也尝试执行默认的执行,其中没有指定<file>。在pluginManagement中配置插件并显式地将不同的执行绑定到特定的阶段通常是个好主意。

尝试在默认的插件配置中放置一个显式的'‘和'’元素。您可以将垃圾放入其中,以查看是否执行了默认执行,如果执行了,则将其中一次执行变为默认执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/649955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档