1

嘿,我有一个部署 pojo 插件(将战争部署到远程服务器)。我在 pom 定义的构建部分中有远程部署插件,我需要在部署远程目标之前触发包阶段,因为在我将其安全复制到远程服务器之前已经创建了战争。

使用执行元素(根据文档),我可以将我的目标附加到特定阶段,例如将其绑定到之后的阶段,因此在我的情况下,安装阶段......但这只是一种解决方法。

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

简单地说,如果我只将我的目标放入构建部分并运行它,那么之前不会运行包阶段。请帮忙

4

2 回答 2

1

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 包
[INFO] 正在扫描项目...
[信息]                                                                         
[信息] --------------------------------------------- -------------------------
[INFO] 构建 Q3934833 Maven Webapp 1.0-SNAPSHOT
[信息] --------------------------------------------- -------------------------
...
[信息] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ Q3934833 ---
[INFO] 没有可编译的资源
[信息]
[信息] --- maven-surefire-plugin:2.5:test (default-test) @ Q3934833 ---
[INFO] 没有要运行的测试。
[信息]
[信息] --- maven-war-plugin:2.1:war (default-war) @ Q3934833 ---
[INFO] 打包 webapp
[信息] 在 [/home/pascal/Projects/stackoverflow/Q3934833/target/Q3934833] 中组装 webapp [Q3934833]
[INFO] 加工战争项目
[INFO] 复制 webapp 资源 [/home/pascal/Projects/stackoverflow/Q3934833/src/main/webapp]
[INFO] Webapp 在 [317 毫秒] 内组装
[信息] 构建战争:/home/pascal/Projects/stackoverflow/Q3934833/target/Q3934833.war
[INFO] WEB-INF/web.xml 已经添加,跳过
[信息]
[信息] --- maven-antrun-plugin:1.6:run (默认)@ Q3934833 ---
[INFO] 执行任务

主要的:
     [回声] 你好!!!!
[INFO] 已执行的任务
[信息] --------------------------------------------- -------------------------
[信息] 构建成功
[信息] --------------------------------------------- -------------------------
...

package正如预期的那样,antrun 插件在 之后执行。

于 2010-10-14T15:39:02.690 回答
0

您可以尝试在 @Mojo 注释中使用 PREPARE_PACKAGE 阶段:

@Mojo(name = "myName", defaultPhase = LifecyclePhase.PREPARE_PACKAGE)
于 2013-06-25T05:00:51.683 回答