比特桶';使用JavaMaven项目和JFX创建s管道
我和我的团队有一个maven项目,在UI中使用jdk1.8(不是开放jdk)和javaFX。它工作得很好,还有很多工作要做,我们希望使用Bitbucket中的管道在运行中进行持续集成 我尝试使用一个简单的.yml文件:比特桶';使用JavaMaven项目和JFX创建s管道,java,maven,javafx,bitbucket,bitbucket-pipelines,Java,Maven,Javafx,Bitbucket,Bitbucket Pipelines,我和我的团队有一个maven项目,在UI中使用jdk1.8(不是开放jdk)和javaFX。它工作得很好,还有很多工作要做,我们希望使用Bitbucket中的管道在运行中进行持续集成 我尝试使用一个简单的.yml文件: image: maven:3.3.9-jdk-8 pipelines: default: - step: caches: - maven script: # Modify the commands below to
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>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>javafx</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${basedir}/dependency/jfxrt.jar</systemPath>
</dependency>
主要是因为他使用的是openjdk,而不是jdk
我还尝试将jfxrt.jar文件放在存储库中,并对其建立依赖关系,但Maven警告我,这样做不合适:
<dependency>
<groupId>javafx</groupId>
<artifactId>jfxrt</artifactId>
<version>${java.version}</version>
<scope>system</scope>
<systemPath>${java.home}/lib/ext/jfxrt.jar</systemPath>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>javafx</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${basedir}/dependency/jfxrt.jar</systemPath>
</dependency>
我的问题是如何强制Maven使用JDK而不是OpenJDK,或者如何对javaFX建立良好的依赖关系,以便Maven可以在每次推送时验证我们的项目,而不是发出警告
感谢大家以后的回复。由于Oracle对Java的许可,Docker Hub不再承载包含Oracle JDK的官方映像。所有的官方图片,包括,现在都基于OpenJDK
要使用OracleJava,您需要(相对简单),或者找到包含JDK的Docker映像的可信源。(通过谷歌搜索很容易找到这些,因为这是一个常见问题。)Frist:JavaFX是OpenJDK的一部分。自从piplines的公测版以来,这种设置对我很有效: yaml文件
image: maven:3.3.3
pipelines:
default:
- step:
script: # Modify the commands below to build your repository.
- mvn clean install
这里是pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.group.id</groupId>
<artifactId>my.artifact.id</artifactId>
<name>my.app.name</name>
<version>1.0.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.4.0</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src/</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- goal is 'mvn jfx:jar' -->
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.7.0</version>
<configuration>
<mainClass>package.to.my.main.class</mainClass>
</configuration>
<executions>
<execution>
<id>create-jfxjar</id>
<phase>package</phase>
<goals>
<goal>build-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
4.0.0
my.group.id
我的.artifact.id
my.app.name
1.0.0
罐子
org.seleniumhq.selenium
硒爪哇
3.4.0
src/
maven编译器插件
3.2
1.8
1.8
com.zenjava
javafxmaven插件
8.7.0
package.to.my.main.class
创建jfxjar
包裹
构建jar