当前位置: 首页 > 知识库问答 >
问题:

使用Maven编译具有所有依赖项的JavaFXJAR

羿季
2023-03-14

Java和Maven新手。

我试图配置我的应用程序,以便我可以通过cmd线生成一个jar,其中包含我所有的依赖项。

据我所知,我正在正确设置Pom以使用此插件:https://github.com/javafx-maven-plugin/javafx-maven-plugin

以下是我在Pom中的依赖项:

    <dependencies>
        <dependency>
            <groupId>se.michaelthelin.spotify</groupId>
            <artifactId>spotify-web-api-java</artifactId>
            <version>2.1.1</version>
        </dependency>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11</version>
        </dependency>
    </dependencies>

在我的

  • javafx maven插件

以下是如何配置javafxmaven插件

                <groupId>com.zenjava</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>8.8.3</version>
                <configuration>
                    <mainClass>recommendify.Main</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>create-jfxjar</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build-jar</goal>
                        </goals>
                    </execution>
                </executions>

处理这个问题的另一个SO主题说要像这样配置maven-asseting-plugin(我的理解是,这是包所有依赖项):

        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
            <execution>
                <id>create-executable</id>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <outputDirectory>${test.pack.dir}</outputDirectory>
            <appendAssemblyId>false</appendAssemblyId>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
            <archive>
                <manifest>
                    <mainClass>recommendify.Main</mainClass>
                </manifest>
            </archive>
        </configuration>

使用这个Maven配置,我运行以下代码来编译. jar:mvn清洁编译jfx: build-jar

然而,。编译到我的目标目录的jar除了存放清单的META-INF文件夹之外,是完全空的。MF

我到底做错了什么?Maven给了我以下日志消息[INFO]将'deploy'目录添加到Mojo类路径:/Users/adonis/school/recommendify/src/main/deploy。什么是魔咒?我是否应该使用deploy包来容纳我的客户。java文件?早些时候,我遇到了一个问题,在使用Intellij的run应用程序功能时,我的fxml视图包没有被编译到classes output目录,经过一点研究,我推断我的fxml应该存储在资源/fxml下,而不是我恰当命名的视图。这让我相信我需要一个“部署”目录/包。

任何帮助都将不胜感激:)


共有1个答案

壤驷阳波
2023-03-14

尝试使用Maven Jar插件。这就是我在所有JavaFX项目中所做的:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>Your.Main.Class.Here</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>
 类似资料:
  • 问题内容: 我有一个Maven项目,我通常可以从eclipse编译并运行它,但是当我从命令行编译它时,它的依赖项丢失了,并且出现了错误。只有下载依赖项并将它们添加到c:/ Java / jdk / jre / lib / ext后,我才能编译项目 如何从控制台行编译项目及其依赖项,而无需将其手动添加到jdk?编译器可以以某种方式读取Maven依赖项吗? pom.xml 问题答案: 从具有某些mav

  • 问题内容: 我需要为具有大量jar依赖项的maven项目为JBoss7 生成文件。最简单的方法是什么?该文件如下所示: 这样就应该为每个项目的jar依赖关系创建元素。 还是我做错了什么?从Maven项目创建JBoss7模块的正确方法是什么? 问题答案: 我不太了解JBoss以及是否还有另一种方式可以做到这一点,但是您可以使用GMaven非常简单地做到这一点: 需要注意的几件事: 该脚本会将XML吐

  • 本文向大家介绍Apache Maven 创建具有项目所有依赖项的.jar文件,包括了Apache Maven 创建具有项目所有依赖项的.jar文件的使用技巧和注意事项,需要的朋友参考一下 示例 要创建包含所有依赖项的JAR,可以使用内置描述符格式jar-with-dependencies。以下示例package使用此内置描述符并声明的主类来配置绑定到该阶段的Assembly Plugin的执行co

  • 问题内容: 我需要将我们的maven build java项目发布给远程质量检查团队。为此,我想下载所有依赖项,并发送给他们,这样他们就不需要下载它们了。 当前,所有依赖项都在pom.xml文件中定义,并且我们使用mvn install或mvn包来构建项目。一些项目成员使用uber jars,其他一些项目则使用jars +依赖项来执行。 什么是最简单的方法来预打包相关的jar文件,以使从Inter

  • 我正在尝试在 Docker 容器中构建/部署Spring启动。 如您所见,我用第一个mvn命令缓存了所有的依赖项,这样我的代码应用程序中的每一个变化都不会触发新的大量依赖项下载。它适用于大多数依赖项,但仍有一些需要下载(即使缓存)。这是第二个mvn命令(包)的日志: (顺便说一句,(0 B在0 B / s)有点奇怪...只是一张支票? 如果我基于第一个maven命令之后的步骤启动一个容器(mvn依

  • 我试图用Maven做一个小程序。我使用的是来自我大学教授的模板,我想使用log4j进行日志记录。当我在eclipse中运行该程序时,它工作得很好。然而,当我用“MVN install”创建jar并尝试用cmd运行程序时,我得到的是一个NoClassDefFoundError 我在这里还发现了这一点:NoClassDefFoundError在Maven依赖上,我尝试使用maven-shade-plu