Skip to content

Development Guide ​

本文档为想要构建、修改或为 GeoTools 库做出贡献的开发人员提供信息。它涵盖开发环境设置、构建过程、持续集成工作流程和发布流程。有关 GeoTools 架构的信息,请参阅 Core Architecture。

开发环境设置 ​

要使用 GeoTools 源代码,您需要设置适当的开发环境。

先决条件 ​

进行 GeoTools 开发需要以下内容:

  • Java Development Kit (JDK):

    • 必需: JDK 11 (GeoTools 21.x 及更高版本)
    • 可选: JDK 17 用于针对较新的 Java 版本进行测试
  • Apache Maven: 推荐 3.5 版本或更新版本

  • Git: 用于源代码管理

  • IDE: Eclipse、IntelliJ IDEA 或其他 Java IDE(可选但推荐)

安装 Java ​

GeoTools 目前需要 Java 11 进行开发。您可以使用 OpenJDK 或 Oracle JDK 发行版。

# 使用 SDKMAN(推荐)
sdk install java 11.0.20.1-tem

# 使用 apt-get
sudo apt-get install openjdk-11-jdk

安装 Maven ​

Maven 用作 GeoTools 的构建系统。

# 使用 SDKMAN
sdk install maven

# 使用 apt-get
sudo apt-get install maven

Git 配置 ​

在使用 GeoTools 存储库之前配置 Git:

git config user.name "Your Name"
git config user.email your.email@example.com
git config --global core.autocrlf input

构建 GeoTools ​

获取源代码 ​

git clone https://github.com/geotools/geotools.git
cd geotools

存储库结构 ​

SVG
100%

基本构建 ​

要构建整个 GeoTools 库:

mvn clean install

对于更快的构建而不运行测试:

mvn clean install -DskipTests

要使用所有可选模块构建:

mvn clean install -Dall

并行构建 ​

Maven 3 支持并行构建以利用多核处理器:

mvn clean install -Dall -T 2C

2C 参数告诉 Maven 每个 CPU 核心使用 2 个线程。

构建单个模块 ​

要构建特定模块:

cd modules/library/main
mvn clean install

常见构建问题 ​

持续集成和测试 ​

GeoTools 使用 GitHub Actions 进行持续集成测试。CI 流程确保代码更改不会破坏现有功能。

CI/CD 工作流程 ​

SVG
100%

数据库集成测试 ​

数据库集成测试验证 GeoTools 可以连接到各种数据库系统:

  • PostgreSQL/PostGIS (postgis_online.yml)
  • MySQL (mysql_online.yml)
  • Oracle (oracle_online.yml)
  • Microsoft SQL Server (mssql_online.yml)
  • DB2 (db2_online.yml)
  • GeoPackage (geopkg_online.yml)

这些测试在拉取请求上执行以确保兼容性。

本地运行测试 ​

要运行 GeoTools 的测试:

mvn test

要运行特定的测试类:

mvn -Dtest=YourTestClass test

对于针对数据库等在线资源的测试,使用 online 配置文件:

mvn test -Ponline

发布流程 ​

GeoTools 发布流程涉及几个步骤以确保质量和一致性。

发布工作流程 ​

SVG
100%

发布先决条件 ​

执行 GeoTools 发布需要以下内容:

  1. 访问 GeoTools Git 存储库的提交权限
  2. 访问 Jenkins 的构建权限
  3. 访问 GeoTools Blog 的编辑权限
  4. GeoTools JIRA 的管理权限
  5. SourceForge 中的发布/文件管理权限

构建发布 ​

发布构建使用 build_release.sh 脚本执行,该脚本:

  1. 检出适当的分支
  2. 更新所有文件中的版本号
  3. 构建发布构件
  4. 为发布创建标签

使用示例:

./build/release/build_release.sh -b 28.x 28.1 username email@example.com stable

发布发布 ​

publish_release.sh 脚本处理:

  1. 部署到 Maven 存储库
  2. 将构件上传到 SourceForge

使用示例:

./build/release/publish_release.sh 28.1 28.x username email@example.com

创建和宣布发布说明 ​

发布后:

  1. 从 JIRA 生成发布说明
  2. 使用发布说明创建 GitHub release
  3. 在 GeoTools Blog 上宣布
  4. 向邮件列表发送电子邮件:

为 GeoTools 做贡献 ​

贡献工作流程 ​

SVG
100%

贡献指南 ​

提交贡献时:

  1. 先讨论策略: 首先在开发者邮件列表上讨论您的更改
  2. 包含测试: 始终为您的更改包含测试用例
  3. 遵循约定: 遵守 GeoTools 编码约定
  4. 正确的提交: 使用引用 JIRA 问题的适当提交消息
  5. 提交拉取请求: 将您的更改作为 GitHub 拉取请求提交
  6. 签署 CLA: 对于非平凡的更改,提交贡献许可协议

拉取请求要求 ​

拉取请求应该:

  1. 针对 main 分支(回移植稍后处理)
  2. 包含覆盖更改的测试
  3. 如果更改对最终用户可见,则更新文档
  4. 在提交消息中引用 JIRA 问题
  5. 呈现小而集中的更改(每个提交一个目标)

社区资源 ​

邮件列表 ​

问题跟踪器 ​

GeoTools 使用 JIRA 进行问题跟踪:

开发者聊天 ​

商业支持 ​

对于有截止日期或需要专业协助的用户,可提供商业支持选项:

构建服务器 ​

GeoTools 代码库由构建服务器监控,该服务器在每次提交后安排编译:

本开发指南概述了使用 GeoTools 代码库的关键工具和流程。通过遵循这些指南,您将能够有效地构建、测试和为 GeoTools 项目做出贡献。