发布期间Maven构建插件的执行顺序:准备

时间:2013-03-13 14:19:37

标签: maven plugins release execution

今天我在Maven 3中发现了一个奇怪的行为,同时准备发布(使用Maven发布插件)。由于描述往往相当长,我想在描述之前提出问题:

如何使用发布插件

  • 以便构建fork以正确的顺序执行插件
  • 没有多次执行相同的插件#
  • 并获取Mojo的有效plugin.xml

要发布的工件是Maven插件本身(Mojo with Annotations)。在调用release:prepare目标时,它首先以交互模式启动进程,询问发布的新版本数据。之后,它会在一个应该发布的项目上执行“清理验证”的新进程。

如控制台输出所述,调用的执行顺序为

  1. 清洁
  2. 插件:描述符(Maven-plugin-plugin)
  3. 资源
  4. 编译
  5. testResources
  6. testCompile
  7. 测试
  8. 似乎插件:描述符无法找到任何Mojos,因为尚未进行编译:

    [INFO] [INFO] --- maven-plugin-plugin:3.2:descriptor (default-descriptor) @ concordion-maven-plugin ---
    [INFO] [WARNING] Using platform encoding (Cp1252 actually) to read mojo metadata, i.e. build is platform dependent!
    [INFO] [INFO] Applying mojo extractor for language: java-annotations
    [INFO] [INFO] Mojo extractor for language: java-annotations found 0 mojo descriptors.
    

    如果以正确的方式配置,插件会因为没有找到mojo而失败。

    如果我将发布插件配置为使用

    显式调用编译目标
    <preparationGoals>clean compile verify</preparationGoals>
    

    插件执行的顺序更改为以下内容:

    1. 清洁
    2. 插件:描述符(Maven-plugin-plugin)
    3. 资源
    4. 编译
    5. 插件:描述符(这次找到Mojo注释)
    6. 资源
    7. 编译
    8. testResources
    9. testCompile
    10. 测试
    11. 当找到Mojo时,将使用所有必需的数据创建plugin.xml。

      这是我的pom的整个构建部分。

      <build>
          <plugins>
      
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <version>3.0</version>
                  <configuration>
                      <source>1.7</source>
                      <target>1.7</target>
                      <showDeprecation>true</showDeprecation>
                      <showWarnings>true</showWarnings>
                      <fork>false</fork>
                  </configuration>
              </plugin>
      
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-plugin-plugin</artifactId>
                  <version>3.2</version>
                  <executions>
                      <execution>
                          <goals>
                              <goal>
                                  descriptor
                              </goal>
                          </goals>
                          <phase>prepare-package</phase>
                      </execution>
                  </executions>
                  <configuration>
                      <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
                  </configuration>
              </plugin>
      
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-release-plugin</artifactId>
                  <version>2.4</version>
                  <configuration>
                      <dryRun>true</dryRun>
                      <preparationGoals>clean compile verify</preparationGoals>
                      <goals>deploy</goals>
                  </configuration>
              </plugin>
          </plugins>
      </build>
      

0 个答案:

没有答案