使用 Bitbucket 管道构建 JavaFx 应用程序
Building JavaFx application using Bitbucket pipelines
我正在尝试使用 bitbucket 管道构建 JavaFx 项目。为此,我使用 maven:3-jdk-8 docker 图像。此 Docker 映像使用 OpenJDK 8 而不是 Oracle 的映像(由于许可问题),后者不包含 JavaFx 部分。请注意,我必须使用 Java 8 来构建我的项目!
我遇到的问题是我无法单独使用 docker 图像构建应用程序。
正如对同一问题 () 的回答中所建议的那样:
我尝试使用这个 bitbucket-pipelines.yml 来尝试克服这种情况:
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 # -B batch mode makes Maven less verbose
在第 2 步中,openjfx 似乎已正确安装。
但在第 3 步中,我收到以下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project ***********: Compilation failure: Compilation failure:
[ERROR] /opt/atlassian/pipelines/agent/build/src/main/java/********/******/****/MainFx.java:[7,26] package javafx.application does not exist
它似乎仍在抱怨缺少 JavaFx 库,但我不知道为什么。
在我的开发机器上(Windows 7,jdk1.8。0_221)我可以毫无问题地执行 maven 构建。
之前的方法中缺少的是 javafx 库不在类路径中。基本上,为了使 Maven 构建工作,我必须将 jfxrt.jar 添加到类路径中。
我发现在安装 javafx 后的 maven:3-jdk-8
图像中,可以在以下位置找到该库:
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar
在构建过程中将此文件添加到类路径中 运行 即可。
一个想法(对我有用)是将此库包含在应用程序 pom/dependecy 部分作为 system
范围。
就我而言,我为此制作了一个 maven 配置文件:
<profiles>
<profile>
<id>docker_build</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>javaFX</artifactId>
<version>2.2</version>
<scope>system</scope>
<systemPath>${javafx-location}</systemPath>
</dependency>
</dependencies>
</profile>
</profiles>
为了 运行 这个 maven 构建,你必须发出正确的 maven 命令来添加这个配置文件。例如。
mvn clean install -P docker_build -Djavafx-location=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar
为了简化这一点,我使用以下 Docker 文件制作了一个 Docker 图像:
FROM maven:3-jdk-8
RUN apt-get update && \
apt-get install -y --no-install-recommends openjfx
COPY settings.xml /root/.m2/
使用以下 Maven settings.xml 文件:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/usr/share/maven/ref/repository</localRepository>
<activeProfiles>
<activeProfile>docker_build</activeProfile>
</activeProfiles>
<profiles>
<profile>
<id>docker_build</id>
<properties>
<javafx-location>/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar</javafx-location>
</properties>
</profile>
</profiles>
</settings>
如果有人觉得有用,我也将其发布到 Docker 中心:
https://hub.docker.com/r/brzigonzales/maven-javafx
我正在尝试使用 bitbucket 管道构建 JavaFx 项目。为此,我使用 maven:3-jdk-8 docker 图像。此 Docker 映像使用 OpenJDK 8 而不是 Oracle 的映像(由于许可问题),后者不包含 JavaFx 部分。请注意,我必须使用 Java 8 来构建我的项目! 我遇到的问题是我无法单独使用 docker 图像构建应用程序。
正如对同一问题 (
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 # -B batch mode makes Maven less verbose
在第 2 步中,openjfx 似乎已正确安装。 但在第 3 步中,我收到以下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project ***********: Compilation failure: Compilation failure:
[ERROR] /opt/atlassian/pipelines/agent/build/src/main/java/********/******/****/MainFx.java:[7,26] package javafx.application does not exist
它似乎仍在抱怨缺少 JavaFx 库,但我不知道为什么。 在我的开发机器上(Windows 7,jdk1.8。0_221)我可以毫无问题地执行 maven 构建。
之前的方法中缺少的是 javafx 库不在类路径中。基本上,为了使 Maven 构建工作,我必须将 jfxrt.jar 添加到类路径中。
我发现在安装 javafx 后的 maven:3-jdk-8
图像中,可以在以下位置找到该库:
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar
在构建过程中将此文件添加到类路径中 运行 即可。
一个想法(对我有用)是将此库包含在应用程序 pom/dependecy 部分作为 system
范围。
就我而言,我为此制作了一个 maven 配置文件:
<profiles>
<profile>
<id>docker_build</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>javaFX</artifactId>
<version>2.2</version>
<scope>system</scope>
<systemPath>${javafx-location}</systemPath>
</dependency>
</dependencies>
</profile>
</profiles>
为了 运行 这个 maven 构建,你必须发出正确的 maven 命令来添加这个配置文件。例如。
mvn clean install -P docker_build -Djavafx-location=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar
为了简化这一点,我使用以下 Docker 文件制作了一个 Docker 图像:
FROM maven:3-jdk-8
RUN apt-get update && \
apt-get install -y --no-install-recommends openjfx
COPY settings.xml /root/.m2/
使用以下 Maven settings.xml 文件:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/usr/share/maven/ref/repository</localRepository>
<activeProfiles>
<activeProfile>docker_build</activeProfile>
</activeProfiles>
<profiles>
<profile>
<id>docker_build</id>
<properties>
<javafx-location>/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar</javafx-location>
</properties>
</profile>
</profiles>
</settings>
如果有人觉得有用,我也将其发布到 Docker 中心: https://hub.docker.com/r/brzigonzales/maven-javafx