web-dev-qa-db-ja.com

maven:コンパイルフェーズ後に生成されるリソースを追加する方法

wsgen を使用して、コンパイル済みのJavaクラスから [〜#〜] xsd [〜#〜] ファイルを生成するMavenプロジェクトがあります。

問題は、生成されたファイルをリソースとしてjarファイルに追加したいことです。ただし、resourceフェーズはprocess-classesフェーズの前に実行されるため、追加できません。

Mavenにprocess-classesフェーズで生成されたリソースを追加するように指示する方法はありますか?

32
Avner Levy

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フェーズを使用して、リソースが正しくパッケージ化されることを確認することもできます。

42
khmarbaise