1. 背景
在某些业务场景中,开发的功能无法本地验证,只能在测试环境甚至生产环境验证,典型的如调用其它厂商的Rest接口或者Webservice接口, 对方服务只能在内网环境访问,此时需要将开发的程序打包部署在内网环境进行调试验证,验证失败则根据异常信息修改代码重新打包部署, 如此重复数次甚至数十次直到联调成功,这个过程浪费大量时间在打包部署上面,更好的方式是直接在线上环境修改代码并执行验证。
2. 方法
webservice-client 仓库中包含了一个 Client
类用于调用webservice,
按照下面步骤操作就可以在线上环境运行 Client
-
执行
mvn dependency:copy-dependencies
,将webservice-client的所有依赖jar包下载到target/dependency
目录中 -
线上环境新建一个项目目录client
-
client目录下新建lib目录并将第一步的所有jar包上传到lib目录下
-
client目录下新建src目录以及对应的包目录并在包下创建用于调用webservice接口的java文件
-
编译项目
javac -cp lib/* -d bin src/io/github/*.java
-
运行Client类
java -cp bin;lib/* io.github.Client
-
如果有异常则修改
Client
类或者新增其它类并重复5、6步
在Linux环境下第6步 -cp 后的多个jar包路径使用分号连接,如果所有jar包都在同一目录内,可以使用 find $your-jar-lib-fold -name *.jar | xargs | sed "s/ /:/g" 命令生成所有jar包的classpath结果
|
不只是webservice,任何的java程序例如Spring Boot应用都可以使用这种方式在线上进行调试 |