我的一個項目需要Java 1.8,但有時我們沒有注意到我們正在使用較老的Java,因此我們會遇到一些奇怪的錯誤。運行gradle時如何檢查java版本?
我想添加build.gradle
中的檢查,這樣當我們運行任何任務時,它會先檢查版本,然後打印錯誤並立即退出。
我試着直接在build.gradle
的第一行添加檢查,但它仍然執行其他一些任務,例如, (clean
,compileJava
)檢查發生之前,當我運行:
$ ./gradlew
如何正確做呢?
我的一個項目需要Java 1.8,但有時我們沒有注意到我們正在使用較老的Java,因此我們會遇到一些奇怪的錯誤。運行gradle時如何檢查java版本?
我想添加build.gradle
中的檢查,這樣當我們運行任何任務時,它會先檢查版本,然後打印錯誤並立即退出。
我試着直接在build.gradle
的第一行添加檢查,但它仍然執行其他一些任務,例如, (clean
,compileJava
)檢查發生之前,當我運行:
$ ./gradlew
如何正確做呢?
如果您在構建生命週期的早期階段(在您的build.gradle
文件的開頭或插件的apply方法中進行了簡單檢查),您不應該看到執行任何任務。
您可以使用該JavaVersion枚舉這是gradle這個API的一部分:
if(JavaVersion.current() != JavaVersion.VERSION_1_8){
throw new GradleException("This build must be run with java 8")
}
它也可以更早地檢查,就像在你的'settings.gradle'開頭。 – eskatos 2015-07-30 19:29:36
好,如果你想檢查它很快。把它放在init腳本中;-) – 2015-07-30 20:00:41
當然。請注意,init腳本要麼強制你在命令行中添加'--init-script your-script',要麼必須在項目之外(在$ HOME或$ GRADLE_HOME中)。請參閱https://docs.gradle.org/current/userguide/init_scripts.html – eskatos 2015-07-30 21:50:48
搖籃構建腳本分析和執行,因爲它是。所以如果你把你的支票直接放入腳本中,而不是在某個任務中,它應該立即執行。你可以分享build.gradle文件的相關部分嗎? – Nikem 2015-01-21 06:43:13
@Nikem,謝謝,剛剛發現項目根目錄下有一個'buildSrc'目錄,並且在檢查代碼之前,其中定義的任務正在運行。讓它們先運行 – Freewind 2015-01-21 06:55:23
@Freewind是很好的,這裏不需要使用'buildSrc'。只需在'build.gradle'腳本的開頭添加java的代碼檢查版本即可。 – Opal 2015-01-21 10:01:09