Maven - 如何在生成源阶段触发Castor插件?

时间:2010-11-12 21:49:15

标签: code-generation maven lifecycle castor

我正在对一个蚂蚁项目进行整理。一个模块包含用于使用Castor生成源文件的XSD文件。如果我跑步,我的一切都在运作:

mvn castor:generate package

但是,如果不在命令行中指定,我无法让它为我的插件运行生成目标。我的插件xml部分如下:

<plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>castor-maven-plugin</artifactId>
      <version>1.0</version>
      <configuration>
      </configuration>
      <executions>
        <execution>
          <phase>generate-sources</phase>
          <goals>
            <goal>generate</goal>
          </goals>
        </execution>
      </executions>
</plugin>

我已经尝试了许多阶段条目而没有任何运气。知道我在这里做错了什么吗?我已经在Windows XP和Linux中使用Maven 2和3进行了测试。我已经尝试使用1.0版(我必须使用)和2.0版的castor-maven-plugin。

由于 添

1 个答案:

答案 0 :(得分:4)

castor:generate目标默认绑定到生命周期阶段generate-sources,因此您甚至不必显式绑定它,除非您想将其绑定到另一个阶段。

假设您的*.xsd位于默认目录src/main/castor中,那么以下就足够了:

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>castor-maven-plugin</artifactId>
    <version>1.0</version>
    <configuration>
      <!--schema>src/main/castor/schema.xsd</schema-->
    </configuration>
    <executions>
      <execution>
        <goals>
          <goal>generate</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

假设你有一个src/main/castor/castorbuilder.properties文件,这里是调用generate-sources阶段后面一个阶段的输出:

$ mvn package [INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Q4169367/ 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- castor-maven-plugin:1.0:generate (default) @ Q4169367 ---
[INFO] Processing /home/pascal/Projects/stackoverflow/Q4169367/src/main/castor/schema.xsd
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ Q4169367 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/pascal/Projects/stackoverflow/Q4169367/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ Q4169367 ---
[INFO] Compiling 3 source files to /home/pascal/Projects/stackoverflow/Q4169367/target/classes
...

换句话说,插件的1.0版本会按预期触发(版本2.0也可以)。使用Maven 3.0进行测试。

如果不适合您,请提供一个项目,允许复制并提及您调用的目标。