【发布时间】:2012-06-11 17:32:12
【问题描述】:
我有一个 maven 项目,它使用 wsgen 从已编译的 java 类生成 XSD 文件。
问题是我想将生成的文件作为资源添加到 jar 中。但由于resource 阶段在process-classes 阶段之前运行,我无法添加它们。
有没有办法告诉 maven 添加在process-classes 阶段生成的额外资源?
【问题讨论】:
我有一个 maven 项目,它使用 wsgen 从已编译的 java 类生成 XSD 文件。
问题是我想将生成的文件作为资源添加到 jar 中。但由于resource 阶段在process-classes 阶段之前运行,我无法添加它们。
有没有办法告诉 maven 添加在process-classes 阶段生成的额外资源?
【问题讨论】:
我建议将 XSD 文件的输出目录定义为 target/classes(可能带有一个补充子文件夹,该文件夹将在打包阶段稍后打包到 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 阶段来确保资源被正确打包。
【讨论】:
configuration 从 execution 移动到 plugin 后才有效。 Maven xsd 两者都允许,但这个插件似乎不允许