开发者

force lifecycle prerequisite for maven plugin execution?

开发者 https://www.devze.com 2022-12-24 17:05 出处:网络
I use the maven-properties-plugin during the initialization phase to read in a bunch of properties from a properties file.

I use the maven-properties-plugin during the initialization phase to read in a bunch of properties from a properties file.

I also have the jetty plugin configured to set a couple of the project properties - including those read in above - as system properties to jetty.

If I run the result as

mvn initialize jetty:run-war

it works.

If I just say

mvn jetty:run-war

it fails. How can I force a goal specified on the command line to run in a lifecycle that i开发者_Python百科ncludes the initialization phase?


Following works for me. Hope this helps. file: 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>


If I just say mvn jetty:run-war it fails.

That's not what I'm experiencing. If you look at the documentation of the jetty:run-war goal, you'll see that it:

Invokes the execution of the lifecycle phase package prior to executing itself.

So all the phases preceding package plus the package itself are run and, consequently, the plugins bound to them. And indeed, with the following 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>

Running mvn jetty:run-war produces the following output:

$ mvn jetty:run-war
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building q2488581 - Maven Webapp
[INFO]    task-segment: [jetty:run-war]
[INFO] ------------------------------------------------------------------------
[INFO] Preparing jetty:run-war
[INFO] [properties:read-project-properties {execution: default}]
[INFO] [resources:resources {execution: default-resources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] [compiler:compile {execution: default-compile}]
[INFO] No sources to compile
[INFO] [resources:testResources {execution: default-testResources}]
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/pascal/Projects/stackoverflow/q2488581/src/test/resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] No sources to compile
[INFO] [surefire:test {execution: default-test}]
[INFO] No tests to run.
[INFO] [war:war {execution: default-war}]
[INFO] Packaging webapp
[INFO] Assembling webapp[q2488581] in [/home/pascal/Projects/stackoverflow/q2488581/target/q2488581]
[INFO] Processing war project
[INFO] Copying webapp resources[/home/pascal/Projects/stackoverflow/q2488581/src/main/webapp]
[INFO] Webapp assembled in[76 msecs]
[INFO] Building war: /home/pascal/Projects/stackoverflow/q2488581/target/q2488581.war
[INFO] [jetty:run-war {execution: default-cli}]
...

As we can see, properties:read-project-properties is invoked during the initialize phase (before process-resources to which resources:resources is bound) as expected.

In other words, I cannot reproduce your problem (or maybe you should be more specific).

0

精彩评论

暂无评论...
验证码 换一张
取 消