1

このページによると、 http: //gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtensionAware.html

Gradle の多くのドメイン オブジェクトは拡張機能に対応しています。つまり ext.key = value、 やその他の方法で拡張プロパティを設定できます。

このページには、Configuration と Dependency は拡張機能を認識していると書かれており、そうあるべきですが、そうではなく、わかりません。

2 つの証拠:

まず、このコード スニペットは、依存関係オブジェクトにプロパティを設定する必要があります。

dependencies {
    testCompile(group: 'junit', name: 'junit', version: '4.9') {
        provided = true
        ext.provided = true
    }
}

しかし、他の場所から値を取得することはできません。

task test  { task ->
    task.project.configurations.testCompile.each { 
        println it
        println it.provided
        println it.ext.provided
        println it.hasProperty('provided')
    }
}

何も表示されません。

を設定するprovided=trueと、Gradle は動的プロパティが非推奨であることを警告しますが、拡張プロパティを使用してください。ちなみに、動的プロパティも機能しないようです。

次に、Gradle のソース コードによると、Configuration オブジェクトと Dependency オブジェクトは ExtensionAware ではありません。

https://github.com/gradle/gradle/blob/master/subprojects/core/src/main/groovy/org/gradle/api/artifacts/Dependency.java

それで、私はいくつかのポイントを逃していますか?または、この機能はまだ実装されていません。これは重要な機能だと思います。

4

2 に答える 2

3

ConfigurationDependency です ExtensionAware。インターフェイスは実行時に動的に追加されます。project.configurations.testCompile.each解決されたファイルを反復処理します。宣言された依存関係を反復するには、 を使用しますproject.configurations.testCompile.(all)Dependencies.all

于 2012-12-17T13:26:11.590 に答える
0

私はこの質問が本当に古いことを知っていますが、私は今日、ExtensionAwareではないコピーおよびデタッチされた構成で作業していて、OPの質問で参照されているドキュメントに基づいていると思っていましたが、これに遭遇しました。これは私のGoogleクエリの上部に表示されたので、他の誰かがこれに遭遇した場合に備えて共有すると思いました(Peter Niederwieserの回答に返信するのに十分な担当者がいません).Peter、これはバグですか(少なくともドキュメントでは?)

$ cat build.gradle
apply plugin: 'base'

configurations {
    ericwashere
}

task test << {
    println configurations.ericwashere instanceof ExtensionAware
    println configurations.ericwashere.copy() instanceof ExtensionAware
    println configurations.detachedConfiguration() instanceof ExtensionAware
}


$ ./gradlew --version

------------------------------------------------------------
Gradle 2.11
------------------------------------------------------------

Build time:   2016-02-08 07:59:16 UTC
Build number: none
Revision:     584db1c7c90bdd1de1d1c4c51271c665bfcba978

Groovy:       2.4.4
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.8.0_31 (Oracle Corporation 25.31-b07)
OS:           Windows 7 6.1 amd64


$ ./gradlew test
:test
true
false
false

BUILD SUCCESSFUL

Total time: 2.433 secs
于 2016-07-08T20:33:18.170 に答える