javafxmaven插件:com.zenjava-如何复制外部资源
我对Maven+JavaFX比较陌生,我正试图用com.zenJavaMaven插件生成一个JavaFX可执行jar文件 我遵循此指南作为参考:javafxmaven插件:com.zenjava-如何复制外部资源,java,maven,javafx,maven-plugin,Java,Maven,Javafx,Maven Plugin,我对Maven+JavaFX比较陌生,我正试图用com.zenJavaMaven插件生成一个JavaFX可执行jar文件 我遵循此指南作为参考: 我的项目有以下文件夹结构: 现在我试图在maven构建期间运行configjfx:jar,并且能够生成一个jar文件,但是我需要的资源没有复制到target/jfx/app文件夹下 基本上,我想将整个src/main/resources文件夹复制到target/jfx/app/resources。我如何做到这一点 一些信息: src/main/r
我的项目有以下文件夹结构:
现在我试图在maven构建期间运行config
jfx:jar
,并且能够生成一个jar文件,但是我需要的资源没有复制到target/jfx/app
文件夹下
基本上,我想将整个src/main/resources
文件夹复制到target/jfx/app/resources
。我如何做到这一点
一些信息:src/main/resources/
文件夹将包含运行时需要的不同类型的文件(excel文件、pdf、htmls…),而不仅仅是属性文件
提前谢谢
==============================================================================================更新:
尤里·米迪亚斯的回答很有帮助 在不更改任何其他设置的情况下,我通过以下方式更新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>
src/main/resources
../jfx/app/resources
maven编译器插件
3.5.1
1.8
1.8
com.zenjava
javafxmaven插件
8.7.0
me.iamkenos.bayonteta.MainApp
这确实有效,但我不确定这是否是最好的方法,因为我不得不在
中使用“。/
”。/jfx/app/resources
将等待其他可能的答案。您可以使用resources
关键字将Maven的输出文件夹控制到特定文件夹。例如,在我的项目中:
<resources>
<resource>
<directory>src/main/java/view</directory>
<targetPath>view</targetPath>
</resource>
</resources>
src/main/java/view
看法
在本例中,我强制将java/view
文件夹的内容输出到target/classes/view
,因为它是我的JavaFX图像和FXML所在的位置。您可以对jfx/app/resources
文件夹执行相同的操作
至于复制文件夹,您可以查看。当您运行命令
jfx:jar
时,您将获得可执行文件,因为您将resources文件夹添加到构建路径中
如果您只是将整个src/main/resources
文件夹复制到target/jfx/app/resources
文件夹,您将拥有相同资源文件的副本(在生成的jar文件的内部和外部),并且如果您需要允许用户编辑某些资源文件(例如*.properties
文件)我猜您的代码将依赖于内部文件,因此在这种情况下,用户更改不会产生任何影响
这就是为什么您需要将项目资源拆分为:
- 内部(生成的jar文件的一部分,例如光栅图形和只读配置)
- 外部(位于jar文件之外,例如用户可以编辑的配置文件)
(源代码)-构建路径的一部分\src\main\java
(内部)-生成路径的一部分\src\main\resources
(外部)-从生成路径中排除\src\main\config
<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>
LinkToFolder
是包含编译类的eclipse项目文件夹感谢您的提示!我让它工作了,但我不确定我所做的是否是我能做的最好的解决方案。(见我问题的最新情况)。在接受这个问题之前,我将等待更多可能的答案。至于给出的链接,我实际上在前面看过这个链接,但我无法理解maven资源插件的大部分内容,比如id、phase、configuration。我希望他们能对这个链接做更多的解释,以帮助新生。再次感谢!
mklink /J C:\...\target\classes C:\...\target\jfx\app\config
LinkToFolder OriginalFolder