2016-10-25 41 views
2

最近幾天我一直在創建自己的gradle插件(部分用於學習,部分用於清理我已經鋪設的一些gradle構建腳本),但是我遇到了一個問題,我無法弄清楚如何解決。在我的插件jar中有一個名爲me.alxandr.gradle.bintray.maven.MavenPackage的接口,但是當我嘗試導入它時,出現一個錯誤,說它找不到。這真的很奇怪,因爲插件顯然正在運行(我看到它的輸出,而且它的任務正在註冊)。Gradle:在構建腳本中無法獲得插件類的範圍

目前,我已經做了黑客來解決這個問題如下:

project.ext.MavenPackage = MavenPackage 

這只是讓MavenPackage在buildscript,其中工程可用的名字,但我失去了它的編輯器支持,因爲它是完全動態。有什麼辦法可以(從我的插件)得到buildscript來導入一個包,當它被應用?就像MavenPublication在沒有我需要導入它的範圍內一樣。如果沒有,爲什麼我不能從我的插件包中導入類?

整個源代碼可在https://github.com/Alxandr/gradle-utils。你可以在這裏看到一個嘗試:https://github.com/Alxandr/gradle-utils/blob/master/gradle/publish.gradle#L1。目前的代碼工作原理(與上面解釋的黑客),但我只是尋找一個更好的方式來做到這一點。

回答

0

爲了使用從您的插件一類的搖籃腳本,你必須在插件JAR添加到buildscript類路徑

這裏是如何做到這一點:

buildscript { 
    repositories { /* where to get your plugin jar from, e.g. mavenLocal() */ } 
    dependencies { 
     classpath 'some_group:me.alxandr.plugin:1.0.0' 
    } 
} 
import me.alxandr.gradle.bintray.maven.MavenPackage 

您可以找到搖籃用戶指南關於using external dependencies in your build script

+0

井的更多信息,你是那種寫和排序的錯誤。插件顯然是在我的類路徑中,因爲它正在運行(正如我的問題所解釋的)。雖然我被告知[這裏](https://discuss.gradle.org/t/unable-to-get-plugin-class-in-scope-in​​-build-script/20145)每個腳本都有自己的類路徑(當你從'somefile.gradle''申請時,所以我需要將它添加到*那個* classpath中。 – Alxandr

相關問題