форсировать жизненный цикл для запуска плагина maven? - PullRequest
3 голосов
/ 21 марта 2010

Я использую плагин maven-properties-во время фазы инициализации для чтения набора свойств из файла свойств.

У меня также есть подключаемый модуль jetty, настроенный для установки нескольких свойств проекта, включаяте, которые читаются выше - как системные свойства для молы.

Если я получу результат как

mvn initialize jetty:run-war

, он будет работать.

Если я просто скажу

mvn jetty:run-war

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

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Следующие работы для меня. Надеюсь это поможет. файл: 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>
0 голосов
/ 21 марта 2010

Если я просто скажу 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 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}]
...

Как мы видим, properties:read-project-properties вызывается во время фазы initialize (до process-resources, с которой связан resources:resources), как и ожидалось.

Другими словами, я не могу воспроизвести вашу проблему (или, может быть, вы должны быть более конкретным).

...