Плагин Maven Mojo, как определить фазы, которые должны быть запущены до этой цели? - PullRequest
1 голос
/ 14 октября 2010

эй, У меня есть плагин deploy pojo (развертывание войны на удаленном сервере). У меня есть плагин для удаленного развертывания в разделе сборки определения pom, мне нужно, чтобы фаза пакета была запущена до цели deploy-remote, потому что война уже создана до того, как я защищенно скопирую его на удаленный сервер.

С помощью элементов исполнения (согласно документации) я могу прикрепить свою цель к определенной фазе, например, привязать ее к фазе после, так что в моем случае установить фазу ... но это всего лишь обходной путь.

  <build>
    <plugins>
      <plugin>
        <groupId>sample.plugin</groupId>
        <artifactId>maven-hello-plugin</artifactId>
        <version>1.0-SNAPSHOT</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>sayhi</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

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

Ответы [ 2 ]

1 голос
/ 14 октября 2010

Плагин Maven Mojo, как определить фазы, которые должны быть запущены до этой цели?

Вы не можете.

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

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

Вот пример, демонстрирующий это поведение с настроенным плагином Maven AntRun:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
      <execution>
        <phase>package</phase>
        <configuration>
          <target>
            <echo message="Hi!!!!!"/>
          </target>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

А на выходе mvn package:

$ mvn package
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Q3934833 Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
...
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ Q3934833 ---
[INFO] No sources to compile
[INFO] 
[INFO] --- maven-surefire-plugin:2.5:test (default-test) @ Q3934833 ---
[INFO] No tests to run.
[INFO] 
<b>[INFO] --- maven-war-plugin:2.1:war (default-war) @ Q3934833 ---</b>
[INFO] Packaging webapp
[INFO] Assembling webapp [Q3934833] in [/home/pascal/Projects/stackoverflow/Q3934833/target/Q3934833]
[INFO] Processing war project
[INFO] Copying webapp resources [/home/pascal/Projects/stackoverflow/Q3934833/src/main/webapp]
[INFO] Webapp assembled in [317 msecs]
<b>[INFO] Building war: /home/pascal/Projects/stackoverflow/Q3934833/target/Q3934833.war</b>
[INFO] WEB-INF/web.xml already added, skipping
[INFO] 
<b>[INFO] --- maven-antrun-plugin:1.6:run (default) @ Q3934833 ---</b>
[INFO] Executing tasks

main:
     [echo] Hi!!!!!
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
...

Плагин antrun выполняется после package, как и ожидалось.

0 голосов
/ 25 июня 2013

Вы можете попробовать использовать фазу PREPARE_PACKAGE в аннотации @Mojo:

@Mojo(name = "myName", defaultPhase = LifecyclePhase.PREPARE_PACKAGE)
...