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

Posted

技术标签:

【中文标题】maven:如何添加编译阶段后生成的资源【英文标题】:maven: How to add resources which are generated after compilation phase 【发布时间】:2012-06-11 17:32:12 【问题描述】:

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

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

有没有办法告诉 maven 添加在process-classes 阶段生成的额外资源?

【问题讨论】:

【参考方案1】:

我建议将 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 阶段来确保资源被正确打包。

【讨论】:

工作就像一个魅力!非常感谢 以及如何指定要扫描的包?不是所有的包 这仅在我将 configurationexecution 移动到 plugin 后才有效。 Maven xsd 两者都允许,但这个插件似乎不允许 配置处理从来没有比这两个都有效。在执行中使用配置将配置限制为执行并在插件级别使用配置定义所有执行的配置...如果它在您身边有效,则没有其他不同/错误...

以上是关于maven:如何添加编译阶段后生成的资源的主要内容,如果未能解决你的问题,请参考以下文章

Maven - 如何处理生成的类

IDEA编译JSP文件后生成的.class和.java文件路径

关于整个编译过程和库文件的问题

预编译后生成的文件后缀(.i)

预编译后生成的文件后缀(.i)

Firestore - 如何在将文档添加到集合后获取文档 ID