6

モデル ファイルからソースを生成する必要があるプロジェクト (ここでは my-artifact と呼ばれます) があります。以下の pom.xml の抜粋で説明されているように使用される maven-plugin (my-code-generator) を作成しました。my-artifact のリソースから model.xml を読み込んで処理し、プラグイン内に保存されている定義済みのテンプレートを使用してコードを生成します。問題は、my-code-generator がこれらのテンプレートにアクセスする方法です。これらのテンプレートはプロジェクト リソースではなく、独自のリソース内にあります。

前もって感謝します

<plugin>
  <groupId>my-group</groupId>
        <artifactId>my-code-generator</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <configuration>
                <modelfile>
                        src/main/resources/model .xml
                </modelDir>
        </configuration>
        <executions>
                <execution>
                        <phase>generate-sources</phase>
                        <goals>
                                <goal>generate-model</goal>
                        </goals>
                </execution>
        </実行>
</プラグイン>
<プラグイン>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
                <execution>
                        <id>add-source</id>
                        <phase>generate-sources</フェーズ>
                        <目標>
                                <目標>追加ソース</目標>
                                <ソース>
                                        <ソース>ターゲット/生成されたソース</ソース>
                                </ソース>
                        </構成>
                </実行>
        </実行>
</プラグイン>

4

2 に答える 2

5

MyCodeGenerator Maven プラグインからリソースを取得するには、ClassLoader を使用するだけです。

このようなものを MyCodeGeneratorMojo に追加します

    URL getTemplate(String fileName) {
        return this.getClass().getResource(fileName);
    }

MyCodeGenerator Maven プラグイン内で、テンプレートをディレクトリに追加しsrc/main/resourcesます (そのディレクトリ内で正しいパッケージ エントリ (ディレクトリ) を使用することを忘れないでください)。

于 2010-02-20T20:31:46.043 に答える
3

それらをプラグインの jar ファイルに含め、ClassLoader.getResourceAsStream を介してクラスパスを介して参照します。

それらを別の成果物としてパッケージ化し、それらを依存関係として宣言し、依存関係解決 API を呼び出すことにより、より多くの作業が必要になります。

于 2010-02-20T20:19:11.670 に答える