gpt4 book ai didi

java - Bitbucket 与 Java Maven 项目和 JFX 的管道

转载 作者:行者123 更新时间:2023-12-02 11:59:23 33 4
gpt4 key购买 nike

我和我的团队有一个 maven 项目,使用 jdk1.8(未打开 jdk)和 javaFX 作为我们的 UI。它运行良好,但仍有很多工作要做,我们希望使用 Bitbucket 的管道来进行持续集成。

我尝试使用一个简单的 .yml 文件:

image: maven:3.3.9-jdk-8
pipelines:
default:
- step:
caches:
- maven
script: # Modify the commands below to build your repository.
- mvn -B verify # -B batch mode makes Maven less verbose

但是我的问题是,我们正在使用 IntelliJ 和 jdk1.8 进行开发,其中 javaFX 是标准的并自动包含在项目中。但是管道尝试使用openjdk1.8,并且找不到javaFX类(尤其是jfxrt.jar文件)。

如果我什么都不做并按原样尝试,Maven 错误是:

[ERROR] /opt/atlassian/pipelines/agent/build/src/main/java/JFX/MainJFX.java:[3,26] package javafx.application does not exist
[ERROR] /opt/atlassian/pipelines/agent/build/src/main/java/JFX/MainJFX.java:[4,19] package javafx.fxml does not exist
[ERROR] /opt/atlassian/pipelines/agent/build/src/main/java/JFX/MainJFX.java:[5,20] package javafx.scene does not exist
[ERROR] /opt/atlassian/pipelines/agent/build/src/main/java/JFX/MainJFX.java:[6,20] package javafx.scene does not exist
[ERROR] /opt/atlassian/pipelines/agent/build/src/main/java/JFX/MainJFX.java:[7,20] package javafx.stage does not exist

我尝试将 jfxrt.jar 文件作为系统依赖项包含到 maven 中到我的 pom.xml 中:

<dependency>
<groupId>javafx</groupId>
<artifactId>jfxrt</artifactId>
<version>${java.version}</version>
<scope>system</scope>
<systemPath>${java.home}/lib/ext/jfxrt.jar</systemPath>
</dependency>

但是 Maven 警告我他没有找到 jfxrt.jar 文件:

[WARNING] 'dependencies.dependency.systemPath' for javafx:jfxrt:jar refers to a non-existing file /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar @ line 34, column 25

主要是因为他使用的是openjdk而不是jdk。

我还尝试将 jfxrt.jar 文件放入存储库并对其建立依赖关系,它可以工作,但 Maven 警告我这样做是不正确的:

    <dependency>
<groupId>com.oracle</groupId>
<artifactId>javafx</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${basedir}/dependency/jfxrt.jar</systemPath>
</dependency>

和警告:

[WARNING] 'dependencies.dependency.systemPath' for com.oracle:javafx:jar should not point at files within the project directory, ${basedir}/dependency/jfxrt.jar will be unresolvable by dependent projects @ line 34, column 25[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.

我的问题是如何强制 Maven 使用 JDK 而不是 OpenJDK,或者如何对 javaFX 建立良好的依赖关系,以便 Maven 可以在每次我们推送时验证我们的项目而不警告我们。

感谢大家今后的回复。

最佳答案

由于 Oracle 对 Java 的许可,Docker Hub 不再托管包含 Oracle JDK 的官方镜像。所有官方图片,包括the Maven one you're using ,现在基于 OpenJDK。

要使用 Oracle Java,您需要build your own Docker image as the Pipelines build environment (相对简单),或者找到包含 JDK 的 Docker 镜像的可信来源。 (通过 Google 搜索很容易找到这些,因为这是一个常见问题。)

关于java - Bitbucket 与 Java Maven 项目和 JFX 的管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47376135/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com