これはMavenのベストプラクティスに反することを理解していますが、おそらく私の状況はルールからの数少ない例外の1つです-少なくとも私は代替案を考えることに固執しています:(
環境は次のとおりです。
- 外の世界への独自のテクノロジーベースのインターフェースを備えたレガシーアプリケーションがあります
- 新しいフロントエンドとしてフラッシュを使用したい
- 従来のインターフェースに基づいて、フラッシュクラスを生成し、フロントエンド開発者が使用できるようにフラッシュスイッチにパッケージ化します。
- レガシーインターフェイスに基づいて、フラッシュサービスリクエスト(ブレイズ経由で送信)をレガシーインターフェイスにブリッジするJavaクラスを生成します
- さらに難しくするために、インターフェイスごとにpomを使用したくない/使用できません。これは、数十のインターフェイス(インターフェイス)があり、artifactIdのみが異なるためです。代わりに、ビルドごとに(jenkinsによって)パラメーター化される「汎用」プロジェクト構造を使用します。プロジェクトは、完全に自動化された環境でのみ使用されます。
最初に、これらすべてを1つの「単純な」プロジェクトにまとめようとしました。これは、アーティファクトをインストールする必要がある時点まで機能します。
私の現在のアプローチは、Mavenリファレンスの第13章に触発されたマルチモジュールプロジェクト構造ですが、それ自体にいくつかの欠点があります。
GenericProject
|
+-- GenerateSources from legacy interface
| +-- pom.xml
|
+-- Java
| +-- pom.xml
|
+-- SWC
| +-- pom.xml
|
+-- pom.xml
このアプローチには、「Java」と「SWC」から「GenerateSource」の内部構造への参照があるという欠点があります。これは醜いですが許容範囲内です。
私の邪魔になるのは、インストールプラグインとデプロイプラグインを大幅に調整して、プロセス全体をトリガーしたレガシーインターフェイスの名前とバージョンのアーティファクトを取得する必要があることです。今実行しましたが、非常に壊れやすいようです。
プロジェクトを2つの単純なプロジェクトに分割/複製することを検討しました。
- GenerateSources&Java
- GenerateSources&SWC
しかし、これは相互参照による小さな煩わしさを解決するだけです。
アーロンが彼のコメントで指摘したように、私は問題を述べるのがはっきりしていません。さらにいくつかの実験を行った後、これは私にとって非常に明確になりました。本質的に、解決すべき2つの問題があります。
- 2つのアーティファクトを一緒にインストール/デプロイする
- アーティファクトに別の名前を付けます
project.artifactId
プロセス全体をよりMavenのようにするための提案はありますか?
前もって感謝します。