我对Maven + JavaFX比较陌生,我正在尝试使用com.zenjava maven插件生成一个JavaFX可执行jar文件。
我遵循本指南以供参考:
https://www.youtube.com/watch?v=wbjW8rYlook
现在我正在尝试在maven构建期间运行config jfx:jar
并且能够生成一个jar文件,但我需要的资源不会复制到target/jfx/app
文件夹下。
基本上,我想将整个src/main/resources
文件夹复制到target/jfx/app/resources
。我该如何做到这一点?
一些信息:
src/main/resources/
文件夹将包含我在运行时需要的不同类型的文件(excel文件,pdf,htmls ...),而不仅仅是属性文件。
提前致谢。
=============================================== =========================
更新:
Yuri-M-Dias的回答有所帮助。
在不更改任何其他设置的情况下,我设法通过以下方式更新我的pom文件来执行此操作:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>../jfx/app/resources</targetPath>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.7.0</version>
<configuration>
<mainClass>me.iamkenos.bayonetta.MainApp</mainClass>
</configuration>
</plugin>
</plugins>
</build>
这肯定有效,但我不确定这是否是最好的方法,因为我必须在../
中使用“<targetPath>../jfx/app/resources</targetPath>
”来欺骗它,等待其他可能的答案与此同时。
答案 0 :(得分:2)
您可以使用resources
关键字将Maven的输出文件夹控制到特定文件夹。例如,在我的项目中:
<resources>
<resource>
<directory>src/main/java/view</directory>
<targetPath>view</targetPath>
</resource>
</resources>
在这种情况下,我强制java/view
文件夹的内容输出到target/classes/view
,因为它是我的JavaFX图像和fxml所在的位置。您可以对jfx/app/resources
文件夹执行相同的操作。
至于复制文件夹,您可以查看official maven recommendation。
答案 1 :(得分:1)
当您运行命令jfx:jar
时,您将获得可执行文件jar file with resources folder inside,因为您已将资源文件夹添加到构建路径。
如果您只是将整个src/main/resources
文件夹复制到target/jfx/app/resources
文件夹,您将拥有相同资源文件的副本(在生成的jar文件的内部和外部),如果您需要允许用户编辑一些资源文件(例如*.properties
文件)我猜你的代码将依赖于内部文件,因此用户更改在这种情况下没有任何影响。
这就是为什么你需要将项目资源分成:
我建议创建3个文件夹
\src\main\java
(源代码) - 构建路径的一部分\src\main\resources
(内部) - 构建路径的一部分\src\main\config
(外部) - 从构建路径中排除使用maven复制外部配置文件夹并构建可执行的jfx jar
<build>
<resources>
<resource>
<directory>src/main/config</directory>
<targetPath>../jfx/app/config</targetPath>
</resource>
</resources>
</build>
<plugins>
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.8.3</version>
<configuration>
<vendor>${vendor}</vendor>
<mainClass>${mainClass}</mainClass>
<allPermissions>true</allPermissions>
</configuration>
</plugin>
</plugins>
最后一步是配置symlink路径,以允许eclipse在调试模式下与外部资源一起正常工作。您可以使用Link Shell Extension来执行此操作。
对于Windows,它可能看起来像
mklink /J C:\...\target\classes C:\...\target\jfx\app\config
LinkToFolder OriginalFolder
LinkToFolder
是带有编译类的eclipse项目文件夹