Bitbucket Pipelines - mvn clean install not working with JavaFX
bitbucket-pipelines, continuous-integration, docker, maven-3
Solution
This worked for me:
image: maven:3-jdk-8
pipelines:
default:
- step:
script: # Modify the commands below to build your repository.
- apt-get update
- apt-get install -y openjfx
- mvn clean install
Problem
I am using Bitbucket Pipelines for building a project from our university. Here is my configuration from bitbucket-pipelines.yml: ``` image: maven:3.3.9-jdk-8 pipelines: default: - step: script: # Modify the commands below to build your repository. - mvn -f EasyDiet_JavaFX_View/pom.xml clean install ``` And here is some of the compilation error -> relates to JavaFX: ``` ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[11,19] package javafx.fxml does not exist [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[12,28] package javafx.scene.control does not exist [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[13,27] package javafx.scene.layout does not exist [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[14,27] package javafx.scene.layout does not exist [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[15,20] package javafx.stage does not exist [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[27,13] cannot find symbol symbol: class VBox location: class at.fhv.easyDiet.teamC.presentation.patientFile.PatientFileController [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[29,13] cannot find symbol symbol: class BorderPane location: class at.fhv.easyDiet.teamC.presentation.patientFile.PatientFileController [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[336,12] cannot find symbol symbol: class Stage location: class at.fhv.easyDiet.teamC.presentation.patientFile.PatientFileController ``` And here some output of the build failure: ``` INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 12.828 s [INFO] Finished at: 2016-10-19T10:18:57+00:00 [INFO] Final Memory: 19M/282M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project easydiet-view: Compilation failure: Compilation failure: [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[11,19] package javafx.fxml does not exist [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[12,28] package javafx.scene.control does not exist [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[13,27] package javafx.scene.layout does not exist [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[14,27] package javafx.scene.layout does not exist [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[15,20] package javafx.stage does not exist [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[27,13] cannot find symbol [ERROR] symbol: class VBox [ERROR] location: class at.fhv.easyDiet.teamC.presentation.patientFile.PatientFileController [ERROR] /opt/atlassian/pipelines/agent/build/EasyDiet_JavaFX_View/src/at/fhv/easyDiet/teamC/presentation/patientFile/PatientFileController.java:[29,13] cannot find symbol [ERROR] symbol: class BorderPane [ERROR] location: class at.fhv.easyDiet.teamC.presentation.patientFile.PatientFileController ``` If i build it locally on my Mac it works fine, but if i try with Bitbucket Pipelines i only get those errors. I have already tried with the default maven:3.3.3 image. How is it possible to build JavaFX in Bitbucket Pipelines?