3

依存関係を明示的に指定するivy.xmlファイルがあります。Ivyに組み込まれている、古い依存関係を検出または自動的に更新できる機能はありますか?

完全に安定した再現可能なビルドが必要なため、latest.releaseは使用しません。しかし、時々、いくつかの依存関係を更新したいと思うと同時に、他のどの依存関係が古くなっているのかという質問に答えるとよいでしょう。

4

4 に答える 4

2

あなたと同じように、私は社内の依存関係にのみ動的バージョンを使用します。アップグレードするとき、新しい開発段階の開始時に、リポジトリ検索ツールの 1 つを使用して、サードパーティ ライブラリの新しいバージョンを見つけます。

お気づきだと思いますが、別の問題は、依存関係をアップグレードすると、推移的な依存関係の非自発的なアップグレードにつながることが多いということです....

私が提案したいのは、ivy 依存関係レポートを生成し、これを使用してコードのモジュールの使用状況を確認することです。一部のサード パーティの Maven モジュールが適切に動作せず、多くの不要なライブラリをクラスパスにインポートすることを考えると、これは特に非常に便利です。

以下は、標準の依存関係ターゲットの例です。

  <target name='dependencies' description='Resolve project dependencies and set classpaths'>
    <ivy:resolve/>
    <ivy:report todir='${ivy.reports}' graph='false' xml='false'/>

    <ivy:cachepath pathid="compile.path"  conf="compile"/>
    <ivy:cachepath pathid="provided.path" conf="provided"/>
    <ivy:cachepath pathid="runtime.path"  conf="runtime"/>
    <ivy:cachepath pathid="test.path"     conf="test"/>
  </target>

これが役に立てば幸いです....これを自動的に管理する方法を見つけたら、私は興味があります。

于 2011-02-11T08:21:03.333 に答える
1

これが最善の解決策かどうかはわかりませんが、最新バージョンを要求する構成 (「checklatest」など) を作成し、それに対してレポートを実行できます。

たとえば、ivy.xml ファイルで: ...

<dependencies>
    .... 
    <dependency org="somegroup" name="somename" 
        rev="latest.release" conf="checklatest->default"/>   
</dependencies>

次に、その構成のタスクを使用する Ant タスクを実行します。

そこでさえ、必ずしも最新バージョンを取得するとは限りません。たとえば、Apache の commons-httpclient は最終的に httpcomponents プロジェクトに組み込まれたため、グループ「commons-httpclient」内の最新の「commons-httpclient」を要求すると、バージョン 3.1 のみを検索します。しかし、Ivy が作成したレポートの発行日を見ると、何かが起こったことは明らかで、最新の発行は 2007 年です。その時点で、調査する必要があります。

于 2012-07-02T12:59:37.327 に答える
1

1 つの回避策は、ivy:makepom を使用してから、生成された pom を使用して mvn versions:display-dependency-updates を実行することです。

于 2011-04-01T17:59:50.017 に答える