ツタの依存関係では、
Q1。 違いは何ですか
conf = "runtime-> compile"
vs
conf = "runtime-> compile(*)"
余分な括弧で囲まれたワイルドカードは何をしますか?
Q2。
次は何をしますか?
conf = "compile-> compile(*)"
それは循環的/自己依存ではありませんか?confをそれ自体にマッピングすることのポイントは何ですか?
ツタの依存関係では、
Q1。 違いは何ですか
conf = "runtime-> compile"
vs
conf = "runtime-> compile(*)"
余分な括弧で囲まれたワイルドカードは何をしますか?
Q2。
次は何をしますか?
conf = "compile-> compile(*)"
それは循環的/自己依存ではありませんか?confをそれ自体にマッピングすることのポイントは何ですか?
角かっこはフォールバックです:
1.3以降、依存関係に必要なconfがあるかどうかわからない場合は、フォールバックメカニズムを使用できます。1つの構成が必要であることをツタに示すことができますが、それが存在しない場合は、別の構成を使用してください。これを指定するための構文は、必要なconfの直後の括弧の間にフォールバックconfを追加します。例えば、
test->runtime(default)
これはtest
、モジュールの構成で
runtime
依存関係のconfが必要ですが、存在しない場合は、
default
代わりにconfを使用することを意味します。デフォルトのconfが存在しない場合は、エラーと見なされます。*ワイルドカードはフォールバックconfとして使用できることに注意してください。
質問2の場合:confは常に次のように読み取られます。
ConfFromThisFile -> ConfFromDependency
それで
compile->compile
compile
依存関係のcompile
構成をこのファイルの構成にマップします。サイクルではありません。括弧は次のように述べています。compile
依存関係に存在しない場合は、を使用します*
。
依存関係については、ivyドキュメントの構成マッピングセクションを参照してください。
この構文は、依存関係のフォールバック用です。runtime->compile
ランタイム構成がコンパイル構成に依存することを意味します。コンパイル構成が存在する必要があります。存在しない場合、Ivy はエラーを報告します。ただし、runtime->compile(*)
依存関係を満たすために最初にコンパイル構成を試みます。ただし、コンパイルが存在しない場合は、他のすべての構成が試行されます。詳細については、 Ivy ドキュメントの構成マッピング セクションを参照してください。
それに基づいて、compile->compile(*)
コンパイルには任意の (すべての?) 構成が必要であることを示します。compile->(*)
これは有効な構文ではないと推測しているため、構成 XML スタンザが完了するまで定義されないため、追加compile
のフォールバックが使用されることが保証されます。compile
(*)
「任意」または「すべて」の構成を意味するかどうかは、ドキュメントから明らかではないことに注意してください。したがって、Ivy がすべての依存関係 (存在する場合) に一致する最初の構成で停止するのか、それとも他のすべての構成をユニオン内に取り込むのかはわかりません。