私たちは、maven と maven-osgi プラグインで構築された大きな (~215 バンドルとカウント) osgi (felix+springdm) プロジェクトを持っています。
Maven の方法にはいくつかの問題があります。
1. サブモジュール pom は、共通の変数と依存関係を利用するために親 pom から継承する必要があります (これで問題ありません)。この種の循環参照は、すべての同期を維持することを非常に困難にします。
2. サブバンドルの個々のバージョン管理が非常に複雑だったため、(プロジェクトに参加する前に) すべてのバンドルに同じバージョンを使用することにしました。これは、リリースごとにすべてのバンドルのバージョンを更新することを意味します。これにより、osgiの概念全体が少し無意味になります。少数のバンドルだけに取り組み続けると言っているわけではないことに注意してください。すべてのバンドルに取り組んでいますが、すべてのリリースには通常、一部のバンドルにのみ影響する 1 つまたは 2 つの機能が含まれています。
3. 最終アーティファクトのパッケージとデプロイを行うには、デプロイに必要なすべてのバンドル (テストとモック用のいくつかを除く) をインポートする別のサブモジュールが必要です。[編集] この集約は、バンドルをコンパイルせず、maven リポジトリから選択するだけなので、メインの pom のものとは異なることに注意してください。
4. Maven 依存関係システムと osgi プラグインのインポートを整合させるのが難しい場合があります。インポートを忘れたり、間違った依存関係を置いたりするのは簡単すぎます。
[編集] すべてのバンドル pom には、次のようなセクションがあります。
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>
</Export-Package>
<Import-Package>
com.google.gson,
org.apache.log4j,
org.apache.log4j.spi,
org.dom4j,
com.myinterfaces
</Import-Package>
</instructions>
</configuration>
</plugin>`
これらすべての理由から、問題はありませんが、maven に完全に満足しているわけではありません。最近、誰かが Gradle を万能薬としてではなく、現在の状況に対する明確な改善策として提案しました。
Gradleに移行することをお勧めしますか? そして、どちらが最善の方法でしょうか?
他の誰かが同じ状況を経験しましたか? これは、Osgi を使用するすべての大きなプロジェクトに共通することだと思います。
免責事項:次のような同様の質問を探しました:
Builder、Gradle、または Maven 3 を待ちますか?
Maven : OSGI、バンドル、およびマルチモジュール プロジェクト
しかし、osgiサブモジュールについてではない場所、またはgradleについてではない場所のいずれかです。