29

ここの例8.1に見られるように、Gradleが依存バージョンを「+」記号で処理する方法を理解しようとしています: http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html

testCompile group: 'junit', name: 'junit', version: '4.+

ドキュメントには、これにより junit >= 4.0 のバージョンが取得されると記載されています。たとえば、5.10 以上の (または等しい) 依存関係のバージョンを取得するにはどうすればよいでしょうか? 5.10+それとも5.1+?_ 前者は正しく動作しないようですが、後者は動作します。1.22 以上の依存関係を取得するにはどうすればよいですか? 1.2+? このシナリオでは、バージョン 1.21 が存在し、最新バージョンである場合、1.22 以上が必要なため失敗したいと思いますが1.2+、>= 1.20 を探します。これを指定するにはどうすればよいですか?これは可能ですか?それに関するこれ以上のドキュメントが見つからないようです。

編集:私はそれを1.2+と同等であると考える傾向があります1.2([0-9]+)。これは正しい考え方ですか?

4

3 に答える 3

24

このシナリオでは、バージョン 1.21 が存在し、最新バージョンである場合、1.22 以上が必要なため失敗したいと思いますが、1.2+ は >= 1.20 を探します。これを指定するにはどうすればよいですか?これは可能ですか?

これに関するドキュメントはないと思いますが、Gradle は当初、すべての依存関係管理機能の内部で Ivy を使用していたため、動的バージョンに関する Ivy ドキュメントを調べました。

http://ant.apache.org/ivy/history/latest-milestone/ivyfile/dependency.html

Gradle のドキュメントよりもわずかに多いだけです。Ivy スタイルのバージョン範囲で Gradle を試してみました。

compile group: 'log4j', name: 'log4j', version: '[1.2.12,1.2.17]'

驚くべきことに、バージョンの範囲によっては動作することもあるようです。上記の例では、 に解決され1.2.17ます。

これがあなたの質問に完全に対応していないことはわかっていますが(私も興味があります)、少しの情報を提供できることを願っています.

于 2013-02-20T18:29:24.157 に答える
1

問題は、正規表現に関して「+」を誤って考えていることだと思います。これは、正規表現要素 (「1 つ以上の数字」) として読み取られることを意図したものではなく、「主要な SEMVER コンポーネントのそれぞれが提供されたパターンと一致する最新の利用可能なバージョン」として読み取られることを意図しています。この表記法を使用することさえ好まれない理由についての参照は、http: //central.sonatype.org/articles/2014/Oct/28/enforcing-valid-dependency-versions/にあります。

于 2017-07-19T21:31:40.210 に答える