私は共通の親プロジェクトの子である2つのプロジェクトを持っています。ジェネレータプロジェクトと、ジェネレータ用の対応するMavenプラグインプロジェクトもあります。また、両方の子プロジェクトは、コード生成のために使用される同一の入力ファイル、使用している:Maven:プロジェクト間でソースを共有する
parent: pom
child1: jar
src/main/generator/input.gen
child2: jar
src/main/generator/input.gen
generator: jar
generator-plugin: maven-plugin
を発生プラグインは、社内製のMavenプラグインである:
@Mojo(name = "generate", defaultPhase = LifecyclePhase.GENERATE_SOURCES, threadSafe = true)
public class GeneratorPlugin extends AbstractMojo {
@Parameter(required = true, readonly = true, defaultValue = "${project}")
private MavenProject project;
@Parameter(required = true, defaultValue = "${project.basedir}/src/main/generator/input.gen")
private File input;
...
}
Currenlty、input.gen
はsrc/main/generator/input.gen
とchild1
とchild2
の両方に複製されています。これは問題だ。私はinput.gen
のバージョンを1つだけ持っています。
プロジェクトをどのように構造化すればいいですか?また、この2つの子プロジェクトのpomのgenerator-plugin
プラグインの<configuration><input>...</input></configuration>
でこの共有コピーを参照する必要がありますか?
最初にconあなたがあなたのプラグインを実行するたびにソースコードが変更されることを意味するバージョンコントロールにチェックインされているため、 'src'にリソースなどを生成することはありません。最適な場所は 'target'ディレクトリに物を生成することです。これはデフォルトではバージョン管理によって無視されます。さらに、生成されたリソースは、生成されたjarファイルにパッケージ化されます。ここでは、他のモジュールによってもクラスパスによってリソースにアクセスできます。 – khmarbaise
@khmarbaise私は誤解や混乱があると思います。 'input.gen'は入力リソースであり、スキーマ、モデルなどの定義が含まれています。これらのクラスについては、ジェネレータによって生成されなければなりません。言い換えれば、それはリソースを生成しません。 –
ああ今私はそれを得た私のサイトで申し訳ありませんが誤解。しかし、これは 'input.gen'とこのファイルからクラスを生成する適切なプラグインを含むモジュールを1つしか持たないことを意味します。結果として、他のモジュールから再利用できるjarファイルが得られます。何も複製せずに... – khmarbaise