Ошибка Maven с несколькими выполнениями в maven-deploy-plugin - PullRequest
0 голосов
/ 16 марта 2009

Я нашел этот хороший рецепт и хочу использовать его для развертывания некоторых сторонних файлов в нашем хранилище

Вызов в командной строке:

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

Есть идеи?

Ответы [ 5 ]

6 голосов
/ 12 апреля 2009

Причина, по которой это происходит, заключается в том, что когда плагин вызывается из командной строки, как вы сделали, у него нет фазы или выполнения, связанных с ним. Это означает, что он выбирает безымянную конфигурацию выполнения, которая является конфигурацией вне блока выполнения.

Если вы действительно хотите запустить несколько исполнений, свяжите их с фазой и затем вызовите эту фазу. В этом случае каждое выполнение будет выполняться со своей собственной конфигурацией.

Реальный не заданный здесь вопрос заключается в том, почему вы используете deploy-файл для развертывания множества подобных вещей? Если это сторонний материал, вы должны получить менеджера репо, например Nexus , и загрузить его один раз в репозиторий для использования всей командой.

0 голосов
/ 12 ноября 2015

Конечно, это ошибка. Плагин Maven не должен работать таким образом.

0 голосов
/ 23 января 2010

Чтобы выполнить все развертывания одновременно (как описано Борисом), вы можете добавить:



MyId1
DeployAll
...


MyId2
DeployAll
...

А затем используйте

mvn -DDeployAll

0 голосов
/ 18 марта 2009

Полагаю, maven пытается выполнить выполнение по умолчанию, где <file> не указано. Обычно хорошей идеей является настройка плагинов в pluginManagement и явная привязка различных исполнений к определенным этапам.

Попробуйте поместить явные элементы '' и '' в конфигурацию плагина по умолчанию. Вы можете поместить мусор внутрь, чтобы увидеть, выполнено ли выполнение по умолчанию, и если это так, сделать одно из выполнений выполнением по умолчанию.

0 голосов
/ 16 марта 2009

Это немного многословно, но может помочь:

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