【问题标题】:force lifecycle prerequisite for maven plugin execution?强制执行maven插件的生命周期先决条件?
【发布时间】:2010-03-21 20:24:13
【问题描述】:

我在初始化阶段使用 maven-properties-plugin 从属性文件中读取一堆属性。

我还配置了 jetty 插件来设置几个项目属性 - 包括上面读取的那些 - 作为 jetty 的系统属性。

如果我运行结果为

mvn initialize jetty:run-war

它有效。

如果我只是说

mvn jetty:run-war

它失败了。如何强制在命令行中指定的目标在包括初始化阶段的生命周期中运行?

【问题讨论】:

    标签: java maven-2 maven-plugin


    【解决方案1】:

    以下对我有用。希望这可以帮助。 文件:pom.xml

    <profiles>
        <profile>
            <!-- mvn -Plocal -->
            <id>local</id>
            <build>
                <defaultGoal>package</defaultGoal>
                <plugins>
                    <plugin>
                        <groupId>org.mortbay.jetty</groupId>
                        <artifactId>jetty-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>run-war</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    

    【讨论】:

      【解决方案2】:

      如果我只是说mvn jetty:run-war 它会失败。

      这不是我正在经历的。如果您查看jetty:run-war 目标的文档,您会看到它:

      在执行自身之前调用生命周期阶段 package 的执行。

      所以package 之前的所有阶段加上package 本身都运行,因此,插件绑定到它们。事实上,使用以下 POM:

      <project>
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.stackoverflow</groupId>
        <artifactId>q2488581</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>war</packaging>
        <name>q2488581 Maven Webapp</name>
        <build>
          <plugins>
            <plugin>
              <groupId>org.mortbay.jetty</groupId>
              <artifactId>maven-jetty-plugin</artifactId>
              <version>6.1.10</version>
            </plugin>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>properties-maven-plugin</artifactId>
              <version>1.0-alpha-2</version>
              <executions>
                <execution>
                  <phase>initialize</phase>
                  <goals>
                    <goal>read-project-properties</goal>
                  </goals>
                  <configuration>
                    <files>
                      <file>etc/config/dev.properties</file>
                    </files>
                  </configuration>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </build>
      </project>
      

      运行 mvn jetty:run-war 会产生以下输出:

      $ mvn码头:运行战争 [INFO] 正在扫描项目... [信息] --------------------------------------------- ------------------------- [信息] 构建 q2488581 - Maven Webapp [INFO] 任务段:[jetty:run-war] [信息] --------------------------------------------- ------------------------- [INFO] 准备码头:run-war [信息] [属性:读取项目属性 {执行:默认}] [信息] [资源:资源{执行:默认资源}] [INFO] 使用 'UTF-8' 编码复制过滤的资源。 [INFO] 复制 0 个资源 [信息] [编译器:编译{执行:默认编译}] [INFO] 没有可编译的资源 [信息] [资源:testResources {执行:默认-testResources}] [INFO] 使用 'UTF-8' 编码复制过滤的资源。 [INFO] 跳过不存在的资源目录 /home/pascal/Projects/stackoverflow/q2488581/src/test/resources [信息] [编译器:testCompile {执行:default-testCompile}] [INFO] 没有可编译的资源 [信息] [surefire:测试{执行:默认测试}] [INFO] 没有要运行的测试。 [信息] [战争:战争 {执行:默认战争}] [INFO] 打包 webapp [信息] 在 [/home/pascal/Projects/stackoverflow/q2488581/target/q2488581] 中组装 webapp[q2488581] [INFO] 加工战争项目 [INFO] 复制 webapp 资源[/home/pascal/Projects/stackoverflow/q2488581/src/main/webapp] [INFO] Webapp 组装在 [76 毫秒] [信息] 构建战争:/home/pascal/Projects/stackoverflow/q2488581/target/q2488581.war [INFO] [jetty:run-war {执行:default-cli}] ...

      正如我们所见,properties:read-project-propertiesinitialize 阶段(在process-resources 绑定到resources:resources 之前)按预期被调用。

      换句话说,我无法重现您的问题(或者您应该更具体一些)。

      【讨论】:

      • 您的示例几乎正是我想要做的,但它不起作用。我很茫然。我通过更改应用程序上下文来解决这个问题,这样它就不必再成为系统属性并将其全部删除。
      猜你喜欢
      • 2013-01-28
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 2017-10-17
      • 2012-02-14
      • 2012-04-18
      • 1970-01-01
      • 2011-10-10
      相关资源
      最近更新 更多