提交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'
}
Run Code Online (Sandbox Code Playgroud)
如果您将此构建文件与标准Travis描述符一起使用,它将无法正常工作。它只会用于gradle运行您的构建。但是,如果将包装器任务添加到描述符中:
language: java
jdk:
- oraclejdk8
before_install:
gradle wrapper
Run Code Online (Sandbox Code Playgroud)
Travis将首先运行包装器任务,然后正确检测到gradlew存在的包装器任务并使用它来运行您的构建。
但是,这种方法的缺点是可能破坏您的构建。如果您使用Gradle中预安装的Gradle版本之后实现的某些功能,则该gradle wrapper步骤将失败。这种功能的示例是S3 Maven存储库,我相信它是在v2.4中引入的。
为避免这种情况,您可以将包装器任务移至单独的构建文件,例如wrapper.gradle:
task wrapper(type: Wrapper) {
gradleVersion = '3.4.1'
}
Run Code Online (Sandbox Code Playgroud)
并将.travis.yml文件更改为:
language: java
jdk:
- oraclejdk8
before_install:
gradle -b wrapper.gradle wrapper
Run Code Online (Sandbox Code Playgroud)
这应该做。此设置使用预安装的Gradle来安装包装程序,而无需更改您的主构建脚本。
您可以在此处看到一个示例构建,这是整个GitHub存储库。
注意:还有另一种方法。您可以使用该before_install步骤从可下载的发行版中安装所需的Gradle版本,也可以使用Debian软件包系统。但是,这将需要sudo特权。这样的虚拟机需要很长时间才能启动(大约30秒?)。
另一件事,我在另一个答案的注释中提到了它,如果提交gradlew脚本,则还需要包装器jar和属性。jar是一个二进制文件,有时将其放入版本控制中是有争议的。因此,如果使用上述解决方案,则也可以省略提交gradle文件夹。
| 归档时间: |
|
| 查看次数: |
587 次 |
| 最近记录: |