JeKa 是一个注重简单性的现代 Java 构建工具。
开始使用 Java 时,开发人员通常只是编写一些代码,编译并运行它。然而,这还不足以创建其他人可以重用的有用的 Java 应用程序或库。为了用 Java 构建一些实用的东西,我们需要:
这通常是使用传统的构建工具来完成的,例如 Maven 或 Gradle。这些工具需要大量学习,并且可能涉及繁琐的配置。
一个更简单的替代方案是 JBang,它可以让您编写几乎单文件的 Java 应用程序并轻松共享它们。
另一方面,Jeka 提供简单的依赖管理和部署 ala JBang,同时允许您构建标准的多类应用程序或包含适当测试的库。
先决条件:必须安装 Jeka。
提示:要列出可用选项,请执行:jeka base: --doc。
要创建一个基础结构,准备立即开始编码,请执行:
jeka base: scaffold scaffold.kind=APP
您将获得以下项目结构:
. ├── jeka-src <- Source root directory │ ├── _dev <- Optional package containing all non-prod (build and test) │ │ ├── test │ │ └── Build.java │ └── app <- Sugested base package for production code/resources │ └── App.java ├── jeka-output <- Generated dir where artifacts as jars, classes, reports or doc are generated ├── jeka.properties <- Build configuration (Java and jeka version, kben configurations, ...) └── README.md <- Describes available build commands
所有 Java 代码都应该位于 jeka-src 文件夹中。
_dev 是一个特殊的包,包含源代码和依赖项,仅用于开发(例如,测试、构建)。如果您是 Java 新手,可以忽略或删除它。
脚手架示例在 app 包中包含一个 App 类。您可以在任何您喜欢的包中添加或修改类。
要与 IntelliJ 同步,请执行:
jeka intellij: iml --force
如果 IntelliJ 中没有出现更改,请转到项目的根目录,然后运行:jeka intellij: initProject。
App.java 类声明一个 @JkDep 注释来引用库。您可以根据需要添加任意数量的库。一个好的做法是在同一个基类中声明所有库。
@JkDep("com.github.lalyos:jfiglet:0.8.9") @JkDep("com.fasterxml.jackson:jackson-bom::pom:2.18.2") @JkDep("com.fasterxml.jackson.core:jackson-core") @JkDep("com.fasterxml.jackson.core:jackson-annotations") public class App { public static void main(String[] args) { ... } }
查看依赖符号的详细信息。
此外,您可以将 JAR 文件复制粘贴到以下目录中,以自动将它们包含为依赖项:
├── jeka-boot <- Jars included in the production classpath.
声明非产品依赖
声明对 _dev 包下任何类的依赖,以添加依赖关系并将它们嵌入生产中。
package _dev; @JkDep("org.junit.jupiter:junit-jupiter:5.11.4") @JkDep("org.mockito:mockito-junit-jupiter:5.15.2") class Build extends KBean { ... }
提醒:修改依赖项后,不要忘记运行 jeka intellij: iml。
应用程序可以使用以下方式运行:
jeka base: scaffold scaffold.kind=APP
要在开始之前清理编译,请使用 --clean 选项(简称 -c)。
如果源代码托管在 Git 存储库中,则可以通过引用存储库来直接执行应用程序:
. ├── jeka-src <- Source root directory │ ├── _dev <- Optional package containing all non-prod (build and test) │ │ ├── test │ │ └── Build.java │ └── app <- Sugested base package for production code/resources │ └── App.java ├── jeka-output <- Generated dir where artifacts as jars, classes, reports or doc are generated ├── jeka.properties <- Build configuration (Java and jeka version, kben configurations, ...) └── README.md <- Describes available build commands
如果您想编写一个库,而不是应用程序,则需要声明 moduleId 和版本控制,以便将其发布到 Maven 存储库:
jeka intellij: iml --force
现在,您可以通过执行以下命令来发布您的库:
@JkDep("com.github.lalyos:jfiglet:0.8.9") @JkDep("com.fasterxml.jackson:jackson-bom::pom:2.18.2") @JkDep("com.fasterxml.jackson.core:jackson-core") @JkDep("com.fasterxml.jackson.core:jackson-annotations") public class App { public static void main(String[] args) { ... } }
脚手架代码已经包含一个 _dev.test.MyTest 测试类,可以运行了。
├── jeka-boot <- Jars included in the production classpath.
您可以在任何您喜欢的包中添加更多测试。但是,请记住,不在 _dev 包(或其子包)中的测试类将作为死代码包含在生产 JAR 中。
如今,Java 发展迅速,每六个月就会发布新版本。 JeKa提供了一种非常方便的Java版本之间切换的方式。只需在 jeka.properties 文件中指定版本即可:
package _dev; @JkDep("org.junit.jupiter:junit-jupiter:5.11.4") @JkDep("org.mockito:mockito-junit-jupiter:5.15.2") class Build extends KBean { ... }
这将在下一次应用程序编译或运行期间自动安装 JDK 23。
除此之外,Jeka 还提供以下命令:
jeka --program arg0 args1 ... # or `jeka -p` for short
其他命令:
jeka --remote [git repo url] --program arg0 arg1 ... # or jeka -r [git repo url] -p
随着代码库的不断增长,您可能会发现使用完整的项目结构会更舒服。
转移到项目很容易,要了解如何操作,请访问构建项目教程。
您还可以在代码库中编写Kotlin代码。只需在 jeka.properties 文件中指定您要使用的 kotlin 版本:
@base.moduleId=org.example:my-lib @base.version=1.0.0-SNAPSHOT
现在,您可以编辑如下所示的 Kotlin 代码,将其与代码库中现有的 Java 代码无缝集成,甚至创建 100% Kotlin 应用程序:
jeka maven: publish
Jeka 提供了一种实用的模式来开始编写现实生活中的 Java 应用程序,而无需传统构建工具的负担。
它的多态结构允许处理逐渐增加的复杂性和大小,而不牺牲简单性。
资源:
以上是JeKa:真正开始使用 Java 的最简单方法的详细内容。更多信息请关注PHP中文网其他相关文章!