0

現在、pax-examを使用してosgiユニットテストを実行しています。私が取り組んでいるプロジェクトには、多くのサブモジュールとバンドル間の依存関係があります。現在、私のプロジェクトのバンドルのバージョンはxxx-SNAPSHOTです。pax-examconfigオプションを次のように設定しました。

options.add(CoreOptions.mavenBundle().groupId("xxx.xxx").artifactId("xxx.xxxx.xxxx.xx").versionAsInProject());

テストを実行すると、paxはSNAPSHOTの依存関係を再ダウンロードし、ローカルリポジトリからリリースの依存関係を読み取ります。そして、次の情報を出力します。

[main] INFO org.ops4j.pax.scanner.internal.ProvisionServiceImpl - Scan bundles from [scan-bundle:mvn:commons-lang/commons-lang/2.6]
[main] INFO org.ops4j.pax.scanner.internal.ProvisionServiceImpl - Scan bundles from [scan-bundle:mvn:xxx.xxx/xxx.xxx.xxx/x.x.x-SNAPSHOT@update]

ご覧のとおり、依存関係の更新ポリシーを設定していなくても、paxはSNAPSHOTの依存関係を自動更新します。 私の質問は:そのpax defultの振る舞いですか?この動作を変更するにはどうすればよいですか?SNAPSHOTの依存関係を自動更新したくありません。

4

3 に答える 3

1

ログメッセージに表示される@updateサフィックスは、Mavenスナップショットの更新ではなく、OSGiバンドルの更新を参照しています。

http://team.ops4j.org/wiki/display/paxscanner/Bundle+Scannerを参照してください。

ちなみに、PaxRunnerContainerを使用しているようです。ネイティブコンテナは、一般的に操作が簡単です。

于 2012-08-04T08:44:36.423 に答える
0

ハラルドが説明したように、あなたはパックスランナーの行動を観察しています。デフォルトでは、PaxExamは実行のたびにクリーンなPaxRunner作業フォルダーを使用するため、Mavenリポジトリー(ローカルまたはリモート)からのすべてのアーティファクトを常に更新します。どのように機能するかは、使用しているPaxExamとRunnerの特定のバージョンとsettings.xmlによって異なります。Pax URLの基本的な実装が近年変更されたため、コンテキストとセットアップ(バージョン!)をより適切に説明する必要があります。

ここでお手伝いさせていただきます。

于 2012-08-09T14:21:23.490 に答える
0

SNAPSHOT更新ポリシーは、PaxよりもMavenの機能です。mavenを使用してSNAPSHOTをダウンロードすると、mavenはダウンロードした依存関係のバージョンディレクトリにxmlメタデータファイルを作成します。このファイルは、ローカルのMavenリポジトリにあります。このメタデータファイルには、ファイルが作成された日付の日時スタンプが含まれます。依存関係を再度解決する場合、mavenは、外部リポジトリで使用可能なスナップショットの日付をローカルリポジトリで使用可能な日付と再度比較し、使用可能な最新のスナップショットを取得するようにします。この回答はPaxよりもMavenの動作に関するものですが、スナップショットに関するMaven mojoの動作を理解していれば、使用しているPAXのバージョンがその機能を更新するためにどのように作成されたかを理解するのに役立ちます。

于 2012-08-11T22:45:20.143 に答える