小编典典

maven:如何添加在编译阶段之后生成的资源

java

我有一个maven项目,该项目使用wsgen从已编译的Java类生成XSD文件。

问题是我想将生成的文件作为资源添加到jar中。但是由于该resource阶段在该process-classes阶段之前运行,所以无法添加它们。

有没有办法告诉Maven添加在该process-classes阶段生成的其他资源?


阅读 232

收藏
2020-12-03

共1个答案

小编典典

我建议将XSD文件的输出目录定义为target /
classs(可能带有一个补充子文件夹,该子文件夹稍后将在打包阶段打包到jar中。这可以通过使用maven-resources-
plugin
来实现。

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.0.2</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <phase>process-classes</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.outputDirectory}</outputDirectory>
              <resources>          
                <resource>
                  <directory>${basedir}/target/xsd-out</directory>
                  <filtering>false</filtering>
                </resource>
              </resources>              
            </configuration>            
          </execution>
        </executions>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>

您需要注意资源插件位于用于调用wsgen部分的插件之后。您也可以使用 prepare-package 阶段来确保将资源正确打包。

2020-12-03