javafxmaven插件:com.zenjava-如何复制外部资源

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+JavaFX比较陌生,我正试图用com.zenJavaMaven插件生成一个JavaFX可执行jar文件

我遵循此指南作为参考:

我的项目有以下文件夹结构:

现在我试图在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文件之外,例如用户可以编辑的配置文件)
我建议创建3个文件夹

  • \src\main\java
    (源代码)-构建路径的一部分
  • \src\main\resources
    (内部)-生成路径的一部分
  • \src\main\config
    (外部)-从生成路径中排除
使用maven复制外部配置文件夹并构建可执行JFXJAR

<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