构建 Java 项目
本指南涵盖的内容 #
有关语言版本和其他构建环境特定信息,请访问我们的参考页面
本指南的其余部分介绍了在 Travis CI 中配置 Java 项目。如果您不熟悉 Travis CI,请先阅读我们的 教程 和 构建配置 指南。
概述 #
Travis CI 环境包含各种版本的 OpenJDK、Gradle、Maven 和 Ant。
要使用 Java 环境,请将以下内容添加到您的 .travis.yml
中
language: java
使用 Maven 的项目 #
Maven 依赖项管理 #
在运行构建之前,Travis CI 会安装依赖项
mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
或者如果您的项目使用 mvnw
包装器脚本
./mvnw install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
请注意,Travis CI 构建生命周期和 Maven 构建生命周期对不同构建阶段使用类似的术语。例如,Travis CI 构建中的
install
比 Maven 构建生命周期中的install
早得多。有关 Travis 构建生命周期 和 Maven 构建生命周期 的更多详细信息,请参见。
Maven 默认脚本命令 #
如果您的项目在存储库根目录中具有 pom.xml
文件,但没有 build.gradle
,则 Travis CI 使用 Maven 3 构建您的项目
mvn test -B
如果您的项目还在存储库根目录中包含 mvnw
包装器脚本,则 Travis CI 会使用该脚本
./mvnw test -B
默认命令不会生成 JavaDoc (
-Dmaven.javadoc.skip=true
)。
要使用不同的 script
命令,请自定义 构建步骤。
使用 Gradle 的项目 #
Gradle 依赖项管理 #
在运行构建之前,Travis CI 会安装依赖项
gradle assemble
或者
./gradlew assemble
要使用不同的 install
命令,请自定义 安装步骤。
Gradle 默认脚本命令 #
如果您的项目在存储库根目录中包含 build.gradle
文件,则 Travis CI 使用 Gradle 构建您的项目
gradle check
如果您的项目还在存储库根目录中包含 gradlew
包装器脚本,则 Travis CI 会使用该包装器
./gradlew check
要使用不同的 script
命令,请自定义 构建步骤。
缓存 #
Gradle 中依赖项缓存的一个特殊之处在于,为了避免在每次构建后上传缓存,您需要将以下行添加到您的 .travis.yml
中
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
cache:
directories:
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
请注意,如果您使用带
sudo
的 Gradle(即sudo ./gradlew assemble
),则上面的缓存配置将无效,因为依赖项将位于/root/.gradle
中,而travis
用户帐户没有写入权限。
使用 Ant 的项目 #
Ant 依赖项管理 #
由于没有使用 Ant 安装项目依赖项的单一标准方法,因此您需要使用 .travis.yml
中的 install:
键指定要运行的确切命令,例如
language: java
install: ant deps
Ant 默认脚本命令 #
如果 Travis CI 未检测到 Maven 或 Gradle 文件,则它会运行 Ant
ant test
要使用不同的 script
命令,请自定义 构建步骤。
在 Ubuntu Xenial (16.04) 上使用 Ant #
不幸的是,ant
目前未预安装在我们的 Xenial 镜像上。您需要通过将以下配方添加到您的 .travis.yml 文件中来手动安装它
dist: xenial
language: java
addons:
apt:
packages:
- ant
请注意,在 macOS 上不支持针对多个 Java 版本进行测试。有关更多详细信息,请参阅 macOS 构建环境。
不同发行版的可用 JVM 列表位于
- 为 **Focal** 安装的 JDK
- 为 **Bionic** 安装的 JDK
- 为 **Xenial** 安装的 JDK
- 为 **Trusty** 安装的 JDK
- 为 **Precise** 安装的 JDK
在一个作业中切换 JDK(Java 8 及更低版本) #
如果您的构建需要在一个作业期间切换 JDK(Java 8 及更低版本),则可以使用 jdk_switcher
。
script:
- jdk_switcher use openjdk8
- # do stuff with open Java 8
使用 jdk_switcher
也会相应地更新 $JAVA_HOME
。
使用 Java 10 及更高版本 #
请注意,
oraclejdk10
自 2018 年 10 月起已停止支持,因此 Travis CI 不再支持它。请参阅 https://www.oracle.com/technetwork/java/javase/eol-135779.html。
openjdk
现在是我们虚拟机上可用的默认 jdk,因为install-jdk
不再安装oraclejdk
。有关上下文,请参阅此 Github Issue。
在一个作业中切换 JDK(切换到 Java 10 及更高版本) #
如果您的构建需要在一个作业期间切换 JDK(Java 10 及更高版本),则可以使用 install-jdk.sh
。
jdk: openjdk10
script:
- jdk_switcher use openjdk10
- # do stuff with OpenJDK 10
- wget https://github.com/sormuras/bach/raw/master/install-jdk.sh
- chmod +x $TRAVIS_BUILD_DIR/install-jdk.sh
- export JAVA_HOME=$HOME/openjdk11
- $TRAVIS_BUILD_DIR/install-jdk.sh -F 11 --target $JAVA_HOME
- # do stuff with open OpenJDK 11
示例 #
- JRuby
- Riak Java 客户端
- Cucumber JVM
- Symfony 2 Eclipse 插件
- RESThub
- Joni,JRuby 的正则表达式实现
构建配置参考 #
您可以在我们的 Travis CI 构建配置参考 中找到有关 Java 的构建配置格式的更多信息。