2017-06-04 5 views
0

maven 3を使用しており、私は多くのモジュールを持つOSGiプロジェクトで作業しています。 各モジュールのバージョンが異なるため、誰かが変更を加えたときにバージョンを-SNAPSHOTに更新する必要があります。しかし、いつかは、バージョンを変更するのを忘れていました。展開が行われても何も展開されず、新しいコードがリリースに埋め込まれていません。 なぜ、mavenプラグインをデプロイして、リリースjar(デプロイされていることを確認していないため、スナップショットではない)だけにmd5検証を追加し、モジュールのように見えるので、 "check version for module X"変更はありますがバージョンは以前と同じですデプロイメント前のmavenデプロイメントチェック

私がデプロイすると、モジュール用のリリースジャーがあり、ターゲットディレクトリのjarとmd5を比較しますが、マニフェストのためにmd5は決して同じではありませんいつも私の警告。 ファイルでmd5ファイルをチェックするコードを少し変更しましたが、ファイルのリスト(MANIFEST ....)をチェックせずに別のファイルのレポートを作成できるようになりました ファイルの90%に同じmd5、他ではないが、もしあれば。実際には2つの異なるファイルを開きます...ネクサスjarはLinux上にビルドされているため、ターゲットjarはWindows上にビルドされています...

どうすれば作成できますかjarファイルはLinuxやWindows上に同じmd5でビルドされていますか?それは可能でしょうか、またはそれはprocesseur、linux/windowsのような多くのものに依存していますか?

事前によるおかげで、あなたは...他のmanearに私がやりたい任意の他のアイデアを持っている場合

+0

まず、何も展開されていないということは、新しいSNAPSHOTが変更され、SNAPSHOTのタイムスタンプが異なるために何か変更された場合、OSGiでは別の修飾子を意味するのでしょうか?リリースに統合されました... btw:MANIFESTの制限で定義されたバージョンか、それともどのように定義されていますか? – khmarbaise

+0

バンドルの修飾子を変更するのを開発者が忘れた場合は、何も展開されません。バージョンが1.0.0の場合、このバージョンはすでにnexus上に存在し、mvndeployはanyrhingを配布しません。しかし、開発者はJavaクラスを変更し、バージョンを1.1.0-SNAPSHOTに渡してもコードはデプロイされません。私たちは静的バージョンを定義しないようにmaven-bundle-pluginを使用しているので、プラグインによってデフォルトの範囲が設定されています。 –

+0

タイコを使っていますか? – khmarbaise

答えて

0

あなたは安定したバージョンは、あなたのコミットに許可されていることを許可しないことによって、あなたのリリースプロセスを改善することができました。実際には、SNAPSHOTのバージョンでコミットする必要があります。それでどうやってこれを保証できますか?コミットされているこのプロジェクトのpom.xmlにversionプロパティのSNAPSHOTがあるかどうかを確認するプリフックコミットを書くことができます。

モジュールを展開する前に、リリースプロセスを実行し、POMを安定版にコミットします。これはMaven Release Pluginの機能です。

+0

はい、良い解決策ですが、誰かが自分のgitローカルにフックファイルを置くのを忘れてしまった場合、フックは決して起動せず、エラーが再び発生する可能性があります...私はmavenに直接入れたくありませんextern configuration;を持っていますが)それは良い一時的な解決策かもしれません;)感謝または提案 –

関連する問題