2013-02-20 8 views
23

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

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]+)に相当すると思う傾向があります。これは正しい考え方ですか?このシナリオでは

答えて

22

バージョン1.21が存在し、最新バージョンであれば、私は以上1.22に等しいたいので、私 は、失敗したいと思いますが、 1.2+は> = 1.20を検索します。これをどのように指定できますか?これは可能ですか?

私はこれについてのドキュメントがあるとは思いませんが、Gradleのは、もともとそのすべての依存関係の管理機能のためにボンネットの下にアイビーを使用するので、私は、ダイナミックなバージョンに関するアイビーのドキュメントを見ていた:

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

これは、Gradleのドキュメントよりわずかに多いだけです。私はアイビースタイルのバージョン範囲でのGradleで試してみました:

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

をし、驚くべきことには、バージョンの範囲が何であるかに応じて、時々動作しているようです。上記の例では、1.2.17に解決されています。

私はあなたの質問に完全には言及していませんが(私も興味がありますが)うまくいけば、それはあなたに少しの情報を提供します。

+3

Ahhhh Ivy!私はそれについて何かのためにmavenのドキュメントを検索し続けました。 http://ant.apache.org/ivy/history/trunk/settings/version-matchers.html私はサブリビジョンマッチャーが起こっていると仮定していますか? –

1

私は、あなたが間違って正規表現の点で "+"を考えていると思います。これは正規表現要素( "1文字以上の数字")として読み込まれるのではなく、 "提供されるパターンと一致する最新のSEMVERコンポーネントがある最新の利用可能なバージョン"として解釈されます。この表記法を使用するのがなぜこれが好まれないのかについての参考文献は、http://central.sonatype.org/articles/2014/Oct/28/enforcing-valid-dependency-versions/

関連する問題