Gradle プロジェクトでは、依存関係を次のように設定しています。
dependencies {
compile group: 'com.our_organization.lib', name: 'Libraries', version: '5.+'
compile group: 'commons-io', name: 'commons-io', version: '2.4'
}
ライブラリの最新リリース バージョンを使用し、完全に動作します。
次に、ビルドした jar を次の方法で Artifactory にリリースします。
artifactory {
contextUrl = artifactory_contextUrl
publish {
repository {
repoKey = publicationRepoKey
username = artifactory_user
password = artifactory_password
maven = true
}
}
}
ほとんどの場合、これは正常に機能します。
ただし、artifactory に移動して特定のバージョンの xml を取得すると、その依存関係は次のようにリストされます。
<dependencies>
<dependency org="com.our_organization.lib" name="Libraries" rev="5.+" />
<dependency org="commons.io" name="commons.io" rev="2.4" />
</dependencies>
これは、ビルドに使用された特定のライブラリ バージョンに自分のバージョンをリンクできないことを意味します。
私がやりたいのは、アーティファクトに与えられた依存バージョンを、ビルドで使用される特定の解決済みバージョンにすることです。
私はいくつかのことを調べましたが、すべて非常にハックであり、より良い方法が必要だと感じています。
これが私が考えた/試したことです:
- 自分で依存関係を解決し、gradle 依存関係 dsl で特定のバージョンを設定すると、gradle に特定のバージョンのように見えます。アイビーを使用して依存関係の解決されたバージョンを取得することは、より困難であることが証明されています。
- xml を書き込んだ後、artifactory に送信する前にいじくり回します。これは非常に多くのレベルで悪く、将来壊れる傾向があります。
- 別の gradle プロジェクトを使用して解決されたバージョンを特定し、それをプロパティ ファイルに書き込みます。このファイルは、#1 と同様に使用されます。これはやり過ぎのような気がします。
全体として、これは単純なように思えますが、私の人生では、適切な解決策を見つけることができません。