我正在嘗試爲我正在進行的項目設置配置項,並且我在想我們是否確實需要提交gradlew
和/或gradle.bat
文件以使其正常工作。Travis CI是否強制執行?
有沒有解決這個問題,或提交這些文件是唯一的方法?
我正在嘗試爲我正在進行的項目設置配置項,並且我在想我們是否確實需要提交gradlew
和/或gradle.bat
文件以使其正常工作。Travis CI是否強制執行?
有沒有解決這個問題,或提交這些文件是唯一的方法?
提交gradlew
腳本並非強制在Travis CI中構建Gradle項目。
也許最好的選擇是使用預先安裝的Gradle來安裝Gradle包裝。這是一個簡單的build.gradle
的樣子:
apply plugin: 'java'
check.doFirst {
println "Running gradle v${project.gradle.gradleVersion}"
}
task wrapper(type: Wrapper) {
gradleVersion = '3.4.1'
}
如果您使用的標準特拉維斯描述這個構建文件,它不會工作。它將簡單地使用gradle
來運行你的構建。不過,如果你的包裝任務添加到描述:
language: java
jdk:
- oraclejdk8
before_install:
gradle wrapper
特拉維斯將首先運行正確的包裝任務,然後檢測gradlew
存在並使用它來運行你的構建。
但是,這種方法有一個缺點,可以打破你的構建。如果您使用Gradle中預先安裝的Gradle版本之後實施的一些功能,則步驟將失敗。我相信這個功能的例子是S3 Maven倉庫,它是在v2.4中引入的。
爲了防止這種情況,你可以移動的包裝任務到一個單獨的構建文件,比方說wrapper.gradle
:
task wrapper(type: Wrapper) {
gradleVersion = '3.4.1'
}
而且.travis.yml
文件更改爲:
language: java
jdk:
- oraclejdk8
before_install:
gradle -b wrapper.gradle wrapper
這應該這樣做。此設置使用預安裝的Gradle來安裝包裝器,而不更改主構建腳本。
您可以看到一個example build here和this is the whole GitHub repository。
注意:還有另一種方法。您可以使用before_install
步驟從可下載的發行版安裝必需的Gradle版本,或者使用Debian軟件包系統。但是,這將需要sudo
特權。這些虛擬機需要很長時間才能啓動(大約30秒?)。
另一件事,我在另一個答案的評論中提到它,如果你提交了gradlew
腳本,你還需要包裝jar和屬性。該jar是一個二進制文件,並將其放入版本控制有時被認爲是有爭議的。因此,如果您使用上述解決方案,則還可以省略提交gradle
文件夾。
這不是強制性的,因爲它已經爲pre-installed Java和Android項目。
但是,這是推薦的方法,因爲安裝的版本取決於創建虛擬機的日期,可能已過時。
您可以試試看,並使用gradle --version
命令檢查version。
更新#1
我證明,我的答案是正確的分叉您MaterialSearchView:
搖籃版本2.2.1已經預先安裝,所以搖籃包裝不是強制性的,但這是推薦的方式,因爲你的項目需要版本2.14.1。
script:
- gradle clean build
我還證明選定的答案是正確的是基於錯誤的假設。嘗試使用不必要的文件,並且破解構建不會使該文件成爲強制性的,只是不要使用它並刪除chmod行。
您可以檢查here所需的搖籃版本爲每個搖籃插件版本,你的情況插件版本2.2.3需要搖籃2.14.1+
重要的是補充一點,建議不只是關於腳本。 'jar'和'properties'也必須提交。許多人不喜歡將二進制文件提交到版本控制(可以理解)。 – sm4
是,需要這些文件。
我確定了這一點與一些試驗和錯誤。我從我的個人項目中的一個分支中刪除了它們,並將它們推送到GitHub,並且Travis構建失敗。
如果您好奇日誌的樣子,check this gist。
正如你可以在底部附近看到,這是失敗的錯誤:
chmod: cannot access `gradlew': No such file or directory
The command "chmod +x gradlew" failed and exited with 1 during .
小編輯:我試圖使用它與gradlew文件,但不是gradlew.bat文件。這可以用於簡單的清理/構建,但是當Travis試圖啓動一個模擬器時,它會掛起10多分鐘。
TL; DR使用這兩個文件。
建議您使用https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:wrapper_generation – petey
不知道這是否是唯一的方法,但這是我自己設置回購的方式向上。 –
一位朋友告訴我,如果你的系統上安裝了gradle和一個系統變量,它可能會運行它。但我認爲它不適用於具有不同gradle版本的項目...... – Mauker