geoserver源码maven编译相关问题
1、登陆失败跳转404错误
登陆失败后指向的路径为:
http://192.168.15.97:8080/hgisserver/web/wicket/bookmarkable/org.geoserver.web.GeoServerLoginPage?error=true 但在url加密模式下,该路径被当作密文处理,指向的资源便不存在,这是geoserver源码的bug,未找到url加密模式的处理逻辑,暂时禁用url加密设置,登陆失败页面可以正常访问;
加密路径如下:
禁用后正常:
升级处理:
org.geoserver.web.DynamicCryptoMapper
若在EncryptUrlParams模式下会对除登陆失败页面的所有页面Url路径和参数进行加密转换,而在解析的时候却会获取cryptoMapper(通过判断GeoServerSecurityManager是否采用EncryptUrlParams)对Url进行解密计算,所以登陆失败页面解析失败;
修改:在DynamicCryptoMapper类中获取CryptoMapper时判断Url中是否包含“LoginPage”,包含则全部采用plainMapper处理,即不对Url进行解密;不包含则通过判断是否采用EncryptUrlParams决定是否解密;
2、geoserver页面显示的服务器IP不对:
在gs-wps-core和gs-web-core中使用的查找函数有问题,修改如下:
//add by lxh for search IP for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); String name = intf.getName(); if (!name.contains("docker") && !name.contains("vir") && !name.contains("lo")) { for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress() && !(inetAddress instanceof Inet6Address)) { return inetAddress; } } } } |
修改代码后,通过maven编译需更新wps模块,若出现Process Status页面的node域值仍未更新:
经检查发现,wps模块在extension文件夹中,该文件下的pom.xml未包含类似的编译模块信息
所以maven编译时若无特别指定,所有的extension模块都不会被编译。
Extension文件夹中通过profiles标签定义了各种profile ,供maven编译时指定编译的模块,如mvn clean install –P wps –Dmaven.test.skip=true,通过-P指定要编译的profile的id。
故只需要修改编译maven命令即可,jenkins中配置Build命令如下:
在Maven中-DskipTests和-Dmaven.test.skip=true的区别如下:
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
-Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。
maven顶级pom和子pom版本号批量修改
当一个版本发布,新起一个版本时,我们只需要手动修改一下项目中pom.xml的版本号就可以了。但是如果这个maven项目有很多的子模块项目,那么一个个手动的去改就显得费时费力又繁琐了。还好,maven为我们提供了以下三个命令(需要进入顶级pom所在的目录)来帮助我们解决这个问题。
#1 设置新的版本号
mvn versions:set -DnewVersion=3.6.2.0
设置新版本号后,需在最外层pom.xml文件中更改gs.version的值为新版本号(3.6.2.0),在使用-Dmaven.test.skip=true选项进行编译安装时,会出现找不到各jar包新版本号的tests包错误,要么去掉所有pom文件中对tests的版本依赖(太繁琐),或者第一次不跳过test模式。
#2 当新版本号设置不正确时可以撤销新版本号的设置
mvn versions:revert
extension模块不会自动撤销,需在extension文件夹中建立备份pom文件pom.xml.versionsBackup,原pom.xml.versionsBackup经过上述命令已经被恢复了,需重建,并将版本号改为前面设置的新版本号(3.6.2.0),在extension目录下运行
mvn versions:revert -P allExtensions
#3 确认新版本号无误后提交新版本号的设置
mvn versions:commit