5

私は gradle を初めて使用し、そこから私のアーティファクト リポジトリにアクセスしたいと考えています。すべての構成を 1 つのビルド スクリプトに入れると、ビルドは成功します。私のbuild.gradleの関連部分は次のとおりです。

allprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'artifactory'
}

// ...

buildscript {
    repositories {
        maven { 
            url 'http://repo.jfrog.org/artifactory/gradle-plugins' 
        }

        maven {
            url artifactory_contextUrl + 'plugins-release'

            credentials {
                username = artifactory_user
                password = artifactory_password
            }
        }
    }

    dependencies {
        classpath(group: 'org.jfrog.buildinfo', name: 'build-info-extractor-gradle', version: '2.0.16')
    }
}


artifactory {
    contextUrl = artifactory_contextUrl

    publish {
        repository {
            repoKey = 'libs-release-local'
            username = artifactory_user
            password = artifactory_password
            maven = true
        }
    }

    resolve {
        repository {
            repoKey = 'libs-release'
            username = artifactory_user
            password = artifactory_password
            maven = true
        }
    }
}


dependencies {
    // My dependencies ...
}

// Rest of the build script ...

ここで、アーティファクトの部分を別の gradle スクリプトに取り出して、整理を改善したいと思います。ここでビルドがうまくいきません。驚くべきことに、build.gradle を foo.gradle にコピーし、build.gradle を 1 行だけを含むように変更しても、次のエラーが発生します。

apply from: 'foo.gradle'

エラーは

FAILURE: Build failed with an exception.

* Where:
Script '/path/to/my/project/foo.gradle' line: 5

* What went wrong:
A problem occurred evaluating script.
> Plugin with id 'artifactory' not found.

これがバグではない場合、だれかが gradle のこの動作を説明apply fromし、解決策を提案できますか?

ありがとうございました

4

2 に答える 2

5

ビルド スクリプトが既に構成されていると、apply fromパーツが解析されるため、特定の ID を持つプラグインの場所を Gradle に伝えるのは遅すぎます。buildscriptスクリプトの一部を保持するか、 init スクリプトに配置する必要があります。

apply from : 'http://link.to/my/gradle.script'
于 2012-09-15T15:05:27.693 に答える
1

完全修飾クラス名を使用して、ヘルパー スクリプトでプラグインを適用することもできます。

buildscript {
    repositories {
         jcenter() 
         mavenCentral()
    }
    dependencies {
        classpath "com.adaptc.gradle:nexus-workflow:0.5"
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:2.2.4"
    }
}
apply plugin: org.jfrog.gradle.plugin.artifactory.ArtifactoryPublicationsPlugin
apply plugin: com.adaptc.gradle.nexusworkflow.NexusWorkflowPlugin

クラス名を引用符で囲むと、Gradle はプラグインを見つけられないことに注意してください。

これは、Artifactory プラグインのクラス名を見つけた方法です。

  1. ありがたいことにオープンソースのプラグインをダウンロードしました。

  2. ファイルの中からプラグインの名前を検索したところ、 artifactory-puplish.properties.

  3. 次のプロパティが含まれていました。implementation-class=org.jfrog.gradle.plugin.artifactory.ArtifactoryPublicationsPlugin

nexus-workflowのソースにはそのようなプロパティ ファイルがありません。

plugins-gradle-master/nexus-workflow/src/main/groovy/com/adaptc/gradle/nexusworkflow/NexusWorkflowPlugin.groovy
于 2014-05-08T15:02:13.220 に答える