JavaFx scenebuilder 和 Maven 集成

JavaFx scenebuilder and Maven Integration

我在eclipse 中创建了一个JavaFx8 Maven 项目。我已将我的 fxml 文件放在 /src/main/resources/fxml/ 中。我能够使用 FxmlLoader 从 java 文件加载 fxml。但是,我无法使用 Scenebuilder 从 Fxml 文件中选择控制器 class。

我应该怎么做才能在 Scenebuilder 工具中自动看到控制器 class?

我发现了一个类似的问题,但答案不明确。我无法登录到 jira 案例。

Tell JavaFX Scene Builder where to look for controller classes

您必须将 FXML 与其控制器放在同一个包中 场景生成器将看到控制器

我最初将 fxml 文件放在同一个文件夹中 /src/main/java。然后,我使用 scenebuilder 映射了所有 elements/controller。

映射完成后,我已将 fxml 移动到 /src/main/resources 文件夹。这行得通。

同一件事的自动化解决方案:将您的控制器和 fxml 文件定位为与标准 java-fx 项目相同。我的意思是将您的 fxml 和控制器文件放在与非 Maven 项目相同的位置。然后将以下maven配置添加到您的项目中。

    <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.7</version>
            <executions>
                <execution>
                    <id>copy-fxml-resources</id>
                    <!-- here the phase you need -->
                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/target/classes/</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/main/java/</directory>
                                <filtering>false</filtering>
                                <includes>
                                    <include>**/*.fxml</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

我知道这是一个老问题,但我已经对修改控制器搜索路径的 Scenebuilder 的 Gluon 版本提出了拉取请求,here. There is also a corresponding issue raised here

如果拉取请求获得投票,它可能会更快地合并。如果有人也可以在 Mac 和 Windows 平台上构建和测试它,那也会有很大帮助。