构建 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 列表位于

在一个作业中切换 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

示例 #

构建配置参考 #

您可以在我们的 Travis CI 构建配置参考 中找到有关 Java 的构建配置格式的更多信息。