首页 > 编程语言 >geonetwork源码编译与开发入门说明

geonetwork源码编译与开发入门说明

时间:2023-11-08 16:37:28浏览次数:37  
标签:java geonetwork 编译 json 源码 运行 curl es

本文介绍geonetwork源码编译及简单的开发修改。

本文包括源码调试的细节,主要给没怎么接触过java又想调试修改部分java代码的提供一定帮助,比如控制器或修改业务逻辑中的增删改操作等

本文使用环境:

操作系统:Windows 11

JDK版本:jdk-8u381-windows-x64.exe

Maven版本:apache-maven-3.9.4

Tomcat版本:apache-tomcat-9.0.80

Elasticsearch版本:elasticsearch-7.9.2-windows-x86_64.zip

GeoNetwork版本:core-geonetwork-4.2.6

IDE:IntelliJ IDEA 2023.2.2

快速启动步骤:
1、启动elasticsearch:bin目录下双击运行elasticsearch.bat
2、使用IDEA打开core-geonetwork,并在终端执行
  mvn clean install -DskipTests
3、运行web系统
  mvn jetty:run

1、开发环境要求

   github源码路径:https://github.com/geonetwork/core-geonetwork/tree/4.2.6

  • GeoNetwork 4.2.6是使用 Java 8 (LTS) 开发,不支持java11,也无法在 Java 7 (1.6) 或更早版本中运行

  • Web服务器:GeoNetwork 附带一个嵌入式容器Eclipse Jetty,可以更改为tomcat或其它Web容器

  • 数据库默认采用H2,可以通过配置更改为Oracle、MySQL、Postgresql等主流数据库

  • GeoNetwork 使用Maven来管理构建过程和依赖项(Maven 3.1.0+)

  • GeoNetwork 搜索引擎构建在 Elasticsearch 之上,需要先完成ES的安装

2、安装搜索引擎Elasticsearch

  • https://www.elastic.co/downloads/elasticsearch 下载 Elasticsearch 并解压缩文件(建议下载该版本官网配的es版本7.9.2,经实测8版本创建索引会报错)
  • 安装完成后运行es,浏览器输入http://localhost:9200/ 验证是否安装成功
  • 在geonetwork安装目录下找到路径.\web\geonetwork\WEB-INF\data\config\index,有三个json文件:features.json,records.json,searchlogs.json

  在命令行cd到指定目录,执行命令,根据三个json文件创建对应的索引:

  cd $GN_DATA_DIRECTORY/config/index
  curl -X DELETE http://localhost:9200/features //删除features索引
  curl -X DELETE http://localhost:9200/records //删除records索引
  curl -X DELETE http://localhost:9200/searchlogs //删除searchlogs索引

  curl -X PUT http://localhost:9200/features -H "Content-Type: application/json" -d @features.json  //创建features索引
  curl -X PUT http://localhost:9200/records -H "Content-Type: application/json" -d @records.json //创建records索引
  curl -X PUT http://localhost:9200/searchlogs -H "Content-Type: application/json" -d @searchlogs.json  //创建searchlogs索引

  注意:

  (1)如果之前没有创建过索引,直接使用curl -X PUT创建,如果之前有创建过,需要先删除索引curl -X DELETE,然后再进行创建

  (2)如果在Windows中curl命令不可用,需要先下载,下载地址:https://curl.se/windows/ 

  (3)也可以不使用curl命令,直接使用Postman等可以执行HTTP的Put请求的工具:  

    a)选择HTTP方法为"PUT"。

    b)在请求头中,添加一个名为"Content-Type"的头,并将值设置为"application/json"。

    c)在请求体中,选择"raw"并将请求的JSON数据放在请求体中。你可以在Postman中直接输入JSON数据,或者从文件中导入它。

3、IDE环境配置

(1)打开File->Setting找到Build Tools下的Maven,修改maven的路径:

 

 (2)确认项目设置是否为java8:

 3、构建项目并运行web系统

在Idea中打开core-geonetwork文件夹,在Terminal中执行以下命令(直接通过Windows的cmd命令行,在项目的文件夹中也可以执行构建和运行web应用):

(1)整个项目构建与安装

cd core-geonetwork  //定位到指定目录
mvn clean install -DskipTests //执行清理和构建整个项目,并跳过测试
其他编译选项:
mvn clean install //不跳过测试
mvn clean install -o //离线模式下执行构建(需要确保项目的依赖项在本地存储库中可用)
mvn clean install -o -DskipTests -T 2C //在离线模式下清理项目、构建项目、跳过单元测试,并使用2个线程进行构建

构建成功后终端显示如下:

 构建完成后,本地Maven存储库包含了由GeoNetwork创建的构件(位于 $HOME/.m2/repository/org/geonetwork-opensource 目录中)

本机位于:D:\Program Files\maven\apache-maven-repository\org\geonetwork-opensource

注意:项目路径下的文件夹名称不能包含中文字符,否则会报错

 

(2) ES的构建与运行(如果独立安装了es,项目构建前先运行es,可跳过该步)

cd es  //定位到es目录
mvn install -Pes-download //激活es-download
mvn exec:exec -Des-start //启动ES

(3)运行Web应用

cd web
mvn jetty:run -Penv-dev //在开发环境(-Penv-dev)中启动Jetty Web服务器

注意:运行带上-Penv-dev参数,确保 GeoNetwork 在没有 JavaScript 缓存的情况下运行,从而允许测试对 Web 用户界面(web-ui)的更改。

运行完命令后,在浏览器输入http://localhost:8080/geonetwork ,即可访问系统。

首次运行会自动创建数据库,默认是H2数据(~/gn.mv.db和~/gn.trace.db)

本机数据库路径是:C:\Users\xxx\Documents\gn.mv.db

在项目的pom.xml文件中,可以根据实际运行情况修改以下配置:

* 如果要修改jetty的运行端口:

* 如果要修改ES的主机和端口:

如上图,修改es.host和es.port,可以更改为使用服务器部署好的es,这样本地就不用每次运行es了。

* 如果要修改数据库,如更改为PostgreSQL(默认使用h2数据库)

(4)重置所有缓存和数据库(谨慎执行)

cd web
mvn clean:clean@reset

4、配置Tomcat来运行web系统

在配置tomcat前,先确认项目配置下的Moudules和Artifacts下都有相应的配置。

(1)在run->Edit Configurations下,添加tomcat服务

 (2)配置好tomcat信息:

 (3)切换到Deploment配置输出构件(若只要运行web系统,可以在Before Launch删除Build,免得重复进行项目构建)

 (4)配置好后,通过右上角可以运行tomcat,运行系统(只是要运行系统使用三角图标,如果使用小虫子图标那个可以调试代码):

 4、调试java代码

(1)使用调试模式运行tomcat服务

(2)以用户组为例,根据F12找到服务地址

(3)找到源码:core-geonetwork/services/src/main/java/org/fao/geonet/api/groups/GroupsApi.java

在获取组中打个断点:

对应实体类:core-geonetwork/domain/src/main/java/org/fao/geonet/domain/Group.java

对应Repository接口:core-geonetwork/domain/src/main/java/org/fao/geonet/repository/GroupRepository.java

 (4)运行系统,点击管理组即可进入断点进行调试。

<本文完>

标签:java,geonetwork,编译,json,源码,运行,curl,es
From: https://www.cnblogs.com/kk8085/p/17816921.html

相关文章

  • 编译原理--自顶向下语法分析方法
    frompixivLL(1)文法的判别LL(1)文法的定义在P71其是根据Select选择符号集来定义的Select定义在P71Select(A->α)含义为:非终结符A在遇到Select(A->α)中元素时才能够将A->α,否则会匹配不上First定义在P69First(A)含义为:非终结符A在推导(->)时遇到的第一个终结符......
  • 使用jadx-gui反编译工具获取签名信息
     1、下载地址: github.com/skylot/jadx/releases 如图:  2、打开jadx-gui方式1:终端执行brewinstalljadx, 执行完毕后,终端再输入命令jadx-gui,即可打开jadx;方式2:解压zip包,在jadx-1.4.7文件夹下找到bin文件夹打开,双击运行jadx-gui,如图: 3、点击“打开......
  • adi CCES 中编译静态库,链接静态库
    编译静态库点击release编译,获得.dlb库文件使用链接静态库......
  • 多语言企业网站源码可以获得吗?saas建站系统源码
    作为一个企业,建立自己的网站是必不可少的。而随着全球化的趋势,多语言企业网站的需求也越来越大。因此,寻找一套适合自己企业的多语言企业网站源码变得十分重要。多语言企业网站源码的意义现代企业需要一个具备多语言功能的网站,这样可以拓展市场,提高企业知名度,并且可以更好地满足不同......
  • B/S架构医院HIS绩效考核系统源码
    医院HIS绩效考核系统是一种以人力资源管理为基础,选用适合医院组织机构属性的绩效理论和方法,基于医院管理目标,构建全方位的绩效考评体系,在科学、合理的绩效管理体系基础上,采用科学管理的方法,如平衡计分卡的管理理念与方法,选取关键指标,对目标的执行进行管理、考核、分析、评价,最终结......
  • app直播源码,uniapp随机数生成签名
    app直播源码,uniapp随机数生成签名1、首先,需要引入node.js内置模块crypto,它提供了一些加密相关的函数和方法。可以在项目的common文件夹下新建一个js文件,例如utils.js,并在其中定义一个生成随机串的方法,例如: //引入node.js内置模块cryptoconstcrypto=require('cr......
  • C语言程序设计 C编译器的作用
    首先举个例子。如果一个不懂英语的中国人和一个不懂中文的英国人交流,可以借助于翻译工具(或软件,比如金山词霸,金山快译,南极星等),也可以通过通过英语翻译(这里指人)来做英汉互译。当英语或中文有语法错误或者笔误时,翻译工具往往不能准确翻译,因为它不具备像人一样的智能,不能自动识别错误和......
  • java一体化医疗信息管理系统源码:云HIS、云病历、云LIS
    基于云计算技术的B/S架构的HIS系统,为医疗机构提供标准化的、信息化的、可共享的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。系统利用云计算平台的技术优势,建立统一的云HIS、云病历、云LIS,有效实现实现协同门诊、住院、药房药库管理、双向转诊转......
  • 医院HIS手术麻醉临床信息管理系统源码 实现术前、术中、术后全流程管理
    手术麻醉系统是一套以数字形式与医院信息系统(如HIS、EMR、LIS、PACS等)和医疗设备等软、硬件集成并获取围手术期相关信息的计算机系统,其核心是对围手术期患者信息自动采集、储存、分析并呈现。该系统通过整合围手术期中病人信息、人员信息、手术信息、物品信息等内容,可提供全套标准......
  • Python 既是解释型语言,也是编译型语言
    哈喽大家好,我是咸鱼不知道有没有小伙伴跟我一样,刚开始学习Python的时候都听说过Python是一种解释型语言,因为它在运行的时候会逐行解释并执行,而C++这种是编译型语言不过我今天看到了一篇文章,作者提出Python其实也有编译的过程,解释器会先编译再执行不但如此,作者还认为【......