错误的容器:程序包javafx.util不存在

时间:2019-06-28 06:02:13

标签: java maven continuous-integration cirrus-ci

我正在实现JavaFX-Application,并使用Cirrus-CI对Github进行持续集成。

这是我的构建配置.cirrus.yml

container:
  image: maven:3.6.1-jdk-8

build_task:
  build_script: mvn clean compile test sonar:sonar

在构建过程中,它无法从已安装的JDK中找到JavaFX库(这些错误日志行仅是示例,还有很多):

[ERROR] /tmp/cirrus-ci-build/src/main/java/com/github/martinfrank/catansettler/gui/ControllerFactory.java:[4,19] package javafx.util does not exist
[ERROR] /tmp/cirrus-ci-build/src/main/java/com/github/martinfrank/catansettler/gui/alert/GameSetupAlertController.java:[6,28] package javafx.scene.control does not exist

注意:

当然,在我本地的DevEnvirnment中,它正在运行...

问题:

什么是正确的设置(Cirrus构建定义),其中包括带有JavaFx的JDK? (或者我在这里做错了吗?)

1 个答案:

答案 0 :(得分:1)

您需要安装openjfx。您可以这样做:

container:
  image: maven:3.6.1-jdk-8

build_task:
  install_script:
    - apt-get update 
    - apt-get install --no-install-recommends -y openjfx
  build_script: mvn clean compile test sonar:sonar

您还可以考虑使用Dockerfile as a CI environment功能并创建这样的Dockerfile(在存储库中使用.ci/Dockerfile相对路径):

FROM maven:3.6.1-jdk-8

RUN apt-get update \
    && apt-get install --no-install-recommends -y openjfx \
    && apt-get clean \
    && rm -f /var/lib/apt/lists

您在.cirrus.yml

build_task:
  container:
    dockerfile: .ci/Dockerfile
  build_script: mvn clean compile test sonar:sonar

这将花费30-40秒的时间来执行install脚本。