Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比特桶';使用JavaMaven项目和JFX创建s管道_Java_Maven_Javafx_Bitbucket_Bitbucket Pipelines - Fatal编程技术网

比特桶';使用JavaMaven项目和JFX创建s管道

比特桶';使用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

我和我的团队有一个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 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