OracleLoadstar/SCE-Universe_Java_Edition
开发者指南库引用与编译

项目编译

SCE-Universe_Java_Edition 项目的编译过程没有使用传统的构建工具(如 Maven 或 Gradle),而是通过一个定制化的 Shell 脚本 build.sh 进行管理。该脚本负责清理、编译 Java 源代码、复制非 Java 资源文件,并将所有编译产物和资源打包成一个可执行的 JAR 文件。

概述

项目编译旨在将 Java 源代码和相关资源转换为可运行的 Java 应用程序。对于 SCE-Universe_Java_Edition 项目,这意味着将 src 目录下的 .java 文件编译成 .class 文件,把其他资源(如图片、配置文件等)复制到输出目录,并最终生成一个 app.jar 文件。这个过程完全由 ./build.sh 脚本自动化,确保了构建的一致性和便捷性。

项目编译要求 JDK 版本不低于 17。

架构

下图展示了项目编译过程中的关键组件及其关系:

加载图表中...

架构说明:

  • 输入源 (Input Source): 包含项目的所有 Java 源代码 (.java 文件) 和其他非 Java 资源文件(例如配置文件、文本文件等)。
  • 构建脚本 (build.sh): 作为整个编译过程的协调者,它定义了编译、资源复制和打包的顺序与逻辑。
  • 构建工具 (Build Tools):
    • javac: Java 编译器,负责将 .java 源代码编译成 Java 字节码 (.class 文件)。
    • rsync: 用于高效地同步非 Java 资源文件到目标输出目录。
    • jar: Java 打包工具,用于将编译后的 .class 文件和复制的资源文件封装成一个标准的 JAR 归档文件。
  • 输出目标 (Output Target):
    • bin/: 临时目录,用于存放 javac 生成的 .class 文件和 rsync 复制的资源文件。
    • app.jar: 最终的可执行 JAR 包,包含了运行应用程序所需的所有编译代码和资源。

核心编译流程

项目的编译过程通过执行 build.sh 脚本来完成,其详细步骤如下:

加载图表中...

流程说明:

  1. 清理 (Cleaning): 脚本首先删除前一次构建生成的所有文件和目录,包括 bin/ 目录和 app.jar 文件,确保一个干净的构建环境。
  2. 编译 (Compiling):
    • 创建一个 bin/ 目录用于存放编译后的字节码和资源。
    • 使用 find 命令查找 src/ 目录下所有的 .java 源文件。
    • 通过 xargs 将这些文件传递给 javac 命令进行编译。javac 的参数 -d bin 指定输出目录为 bin/-sourcepath src 指定源代码路径,-encoding UTF-8 指定文件编码。
  3. 复制资源 (Copying resources): 使用 rsync 工具将 src/ 目录中除 .java 文件之外的所有内容(例如配置文件、文本文件、图片等)复制到 bin/ 目录中。
  4. 打包 (Packaging): 最后,使用 jar 工具将 bin/ 目录中的所有内容打包成一个名为 app.jar 的可执行 JAR 文件。cfe 参数指定了创建文件、指定入口类和从指定目录打包。cn.oraclestar.sce.App.App 被指定为 JAR 文件的入口类。

使用示例

要编译此项目,只需在项目根目录中执行 build.sh 脚本:

bash
./build.sh

Source: build.sh

编译成功后,将在项目根目录生成 app.jar 文件,可以使用以下命令运行:

bash
java -jar app.jar

build.sh 脚本内容

以下是 build.sh 脚本的完整内容:

bash
1#!/bin/bash 2# --- 配置区 --- 3MAIN_CLASS="cn.oraclestar.sce.App.App" 4OUT_NAME="app.jar" 5 6echo "Step 1: Cleaning..." 7rm -rf bin $OUT_NAME 8 9echo "Step 2: Compiling..." 10mkdir -p bin 11find src -name "*.java" | xargs javac -d bin -sourcepath src -encoding UTF-8 12 13echo "Step 3: Copying resources..." 14rsync -av --exclude="*.java" src/ bin/ 15 16echo "Step 4: Packaging..." 17jar cfe $OUT_NAME $MAIN_CLASS -C bin . 18 19echo "Done! Run with: java -jar $OUT_NAME"

Source: build.sh

配置选项

编译过程中的主要配置项直接定义在 build.sh 脚本中:

选项类型默认值描述
MAIN_CLASSStringcn.oraclestar.sce.App.App指定生成 JAR 文件的入口主类。
OUT_NAMEStringapp.jar指定生成的 JAR 文件的名称。
javac 参数N/A-d bin -sourcepath src -encoding UTF-8Java 编译器的参数,控制编译输出目录、源代码路径和文件编码。
rsync 参数N/A-av --exclude="*.java" src/ bin/rsync 工具的参数,用于控制资源复制的行为,排除 Java 源文件。
jar 参数N/Acfe $OUT_NAME $MAIN_CLASS -C bin .jar 工具的参数,控制 JAR 文件的创建、主类设置和打包内容。

相关链接

On this page