从 #KFCStandard JavaFX 项目创建 Maven 原型

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战(已更新的所有项目都能学习) / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新开坑项目:《Spring AI 项目实战》 正在持续爆肝中,基于 Spring AI + Spring Boot 3.x + JDK 21..., 点击查看 ;
  • 《从零手撸:仿小红书(微服务架构)》 已完结,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 100w+ 字,讲解图 4013+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3700+ 小伙伴加入学习 ,欢迎点击围观

在这篇文章中,我将讨论创建一个 maven 原型,我的学生或任何其他人都可以使用它来开始开发 javafx 应用程序。就像编程中的许多冒险一样,这个过程开始得很快,然后在处理具体细节时陷入困境。如果您想创建自己的原型,那么本文将会有所帮助。不要忘记阅读最后的抱怨部分。

示例 javafx 项目的源代码位于 https://github.com/omnijava/simplejavafx

准备在您的系统上安装的原型文件夹位于 https://github.com/omnijava/archetypejavafx/releases 的版本中

第一步:编写程序

可以使用自下而上或自上而下的方法创建原型。到目前为止,最简单的方法是自上而下。您首先编写一个非常简单的 maven 管理的 javafx 应用程序。您正在提供包含必需或推荐的包、资源和源代码的应用程序框架。

我创建的应用程序是一个简单的 javafx 阶段,其中一个场景带有一个按钮,按下该按钮会显示一些文本。提供这种体验的代码采用我希望我的学生遵循的格式。几年前,一些学生创建了一个哈希标签来取笑我严格的规则 #kfcstandard。我如何描述我提供给学生必须遵守的任何规则或说明。该项目在 pom 文件、如何启动 javafx 应用程序、如何进行单元测试以及如何注释代码等方面举例说明了许多#kfcstandards。如果您不是我的学生之一,那么您可能对我的原型有疑问。我真的很想听听你的想法。生活在学术界,我担心我失去了软件开发的真实世界。

尽力确保程序有效。如果您正在创建一个文件为空等待用户填写的原型,那么这可能不会成为问题。如果您的代码像我的一样做了一些事情,请花一些时间来让它正确。

原型提示 #1 :始终创建以 maven groupid 和可选的 artifactid 开头的包。这允许您的原型用户使用他们自己的包名称。

原型提示 #2 :如果您将 pom.xml 中的主类引用为:


 <mainclass>com.kfcstandard.javafxarchetype.mainappfx</mainclass>

改成


 <mainclass>com.kfcstandard.javafxarchetype.mainappfx</mainclass>

原型提示 #3 :如果您需要在使用原型时创建一个包,但您没有任何东西可以放入包中,那么请添加一个空文件。如果其中没有文件,maven 将不会创建包。

pom.xml 注意: 当我用 netbeans 编译时,我收到两个关于 pom.xml 的警告。一个告诉我 ${groupid} 已弃用,取而代之的是 ${project.groupid},第二个告诉我 ${artifactid} 已弃用,取而代之的是 ${project.artifactid}。 netbeans 8.01 编辑器只识别 ${project.groupid} 而不是另一个。因此现在我使用的是已弃用的版本。

第二步:安装maven

我使用 netbeans,我个人对 ide 的偏好以及我在开发原型代码时使用的东西。在我教授的一门课程中,我必须使用 Eclipse。这些 ide 和其他 ide 现在都为 maven 提供了良好的支持。当我说在命令行创建原型更容易时,认识我的人现在会翻白眼。从 https://maven.apache.org/download.cgi 下载并安装 maven。阅读 https://maven.apache.org/install.html 上的安装说明。你需要在可执行路径中有 maven 的 bin 文件夹,Windows 用户必须有一个 java_home 环境变量。

maven note : 一些IDE,比如netbeans,包含maven命令行程序。我建议下载 maven,以便您使用最新版本。

第 3 步:清理项目

找到您的项目所在的文件夹。删除项目文件夹中除 src 文件夹和 pom.xml 文件之外的所有内容。您可能想要制作项目文件夹的副本,因为您将更改一个文件,如果您在更改后运行项目,该文件将导致抛出异常。

第 4 步:更改 fxml 文件

如果您在资源文件夹中创建一个带有 fxml 文件的项目,它可能包含对其 java 控制器文件的引用。在此项目中,文件 scene.fxml 包含:

fx:controller=”com.kenfogel.archetypejavafx.controllers.fxmlcontroller”>

您需要用匹配的属性替换与 groupid 和 artifactid 匹配的包部分。变化看起来像:

fx:controller=”${groupid}.${artifactid}.controllers.fxmlcontroller”>

第 5 步:原型解析或生成原型

原型解析是 Maven 开发人员用来描述使用 Maven 生成原型的术语。此任务将创建一个新的目标文件夹,其中包含代码的原型版本。

在项目的根文件夹中打开命令窗口。在我的例子中是 d:\mvnbuild\archetypejavafx。在提示符下发出命令:


 <mainclass>com.kfcstandard.javafxarchetype.mainappfx</mainclass>

您可以忽略所有警告。

如果一切顺利,您将拥有以下通常不属于 Maven 构建的文件夹:

d:\netbeansprojects\javafxarchetype\target\generated-sources\archetype

第 6 步:使 fxml 文件可过滤

archetype 文件夹中的项目现在包含两个名为 archetype-metadata.xml 的文件。此 xml 文件确定哪些文件将进入原型以及它们是否被过滤。过滤就是用一个值替换一个属性。这就是我们在上一步中更改 scene.fxml 文件的原因。 archetype-metadata.xml 文件不显示资源的 fxml 文件夹中的文件是可过滤的。找到这两个文件,我的在:

d:\netbeansprojects\javafxarchetype\target\generated-sources\archetype\src\main\resources\meta-inf\maven

和

d:\netbeansprojects\javafxarchetype\target\generated-sources\archetype\target\classes\meta-inf\maven

编辑文件,它们是相同的,以更改:


 <mainclass>com.kfcstandard.javafxarchetype.mainappfx</mainclass>

读书


 <mainclass>com.kfcstandard.javafxarchetype.mainappfx</mainclass>

第 7 步:在您的存储库中安装原型

在原型文件夹中打开一个命令窗口,并在提示符下输入以下命令:

d:\netbeansprojects\javafxarchetype\target\generated-sources\archetype> mvn 安装

忽略任何警告。原型应该安全地在

.m2\repository\com\kfcstandard\javafxarchetype-原型

您的 .m2 文件夹在哪里。

步骤 8a:测试它是否适用于 maven 命令行

在您的计算机上创建一个新文件夹以进行测试。我创建了 d:\mvntest。在此文件夹中打开一个命令窗口。运行命令:


 <mainclass>com.kfcstandard.javafxarchetype.mainappfx</mainclass>

接下来的内容非常简单。这是我的输出。请注意,您需要输入 groupid、artifactid、version 和 package。包应该由 groupid 和 artifactid 组成。


 <mainclass>com.kfcstandard.javafxarchetype.mainappfx</mainclass>

 <mainclass>com.kfcstandard.javafxarchetype.mainappfx</mainclass>

在 mvnbuild 文件夹中创建的项目中,检查 scene.fxml 文件并确保它具有基于您输入的 groupid 和 artifactid 的控制器路径。检查项目中的 pom.xml 并验证 主类 是否具有正确的包。

步骤 8b:使用 netbeans 进行测试

启动 netbeans 并选择:

文件 -> 新项目

在对话框中选择左侧的 maven 和右侧 的 project from archetype ,然后单击 next 。

向下滚动找到 javafxarchetype-archetype ,选择它并单击 next 。

在下一个屏幕上,您可以填写成为 工件 ID 的 项目名称 、 组 ID 和 版本 。更改默认为 group id plus artifact id 的 包 是不寻常的。

单击 完成 ,您将加载一个项目。您应该能够 清理和构建 然后 运行 该项目。

您现在已准备好将代码添加到项目中。

步骤 8c:使用 Eclipse 进行测试

启动 eclipse 然后选择 file -> new -> other 。在此对话框中打开 maven 并选择 maven 项目 。

在下一个对话框中无需更改任何内容,因此只需单击 下一步 。

在下一个对话框中,您应该会看到所有可用于 eclipse 的原型。在我的系统上,本地原型首先出现,因此我们创建的原型应该首先出现。选择它并单击 下一步 。

现在你可以填写 group id 、 artifact id 、 version 和 package 。与 netbeans 一样, 包 由 group id 和 artifact id 组成。点击 完成 。

该项目将出现在 包资源管理器 中。右键单击项目并选择 run as -> maven build 并在对话框中选择 run 。该程序应该打开。关闭它,您现在就可以将代码添加到项目中了。

一口呜呜声

在学习如何创建 Maven 原型时​​,我遇到了一个关于我在网上找到的内容的严重问题。几乎每个博客、帖子或 stackoverflow 的回答都只不过是对 apache maven 文档的解释。在我看来,这些作者从未在现实世界中使用过 maven 或原型。 apache maven 文档也是如此。它缺乏任何现实世界的例子,而且远非用通俗易懂的语言编写。

maven 原型系统中也存在一个错误。我花了两天时间才找到它。如果您在 src/main/java 文件夹中有一个由 groupid 和 artifactid 组成的包,并且在 src/test/java 中有完全相同的包,那么原型将被损坏并且无法工作。解决方案是将测试放在包下一级的文件夹中。我会报告的。

最新发布