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

 

posted @ 2018-03-09 15:56  GISer-Li  阅读(1156)  评论(0编辑  收藏  举报