这个过程,比较像mvn install将生成的模块安装到本地.m2仓库中的过程。到此,gatling引擎部分编译和发布完成。
然后,进入gatling-highchats,和上述编译gatling的过程类似,执行sbt compile,然后在发布到本地ivy仓库。注意,一定要先对gatling进行发布后再编译gatling-highchats,否则在编译gatling-highchats的时候会报错的,找不到依赖的库。
至此,编译部分都完成了,那么,问题来了,生成的工具(可执行文件)在什么地方呢?在什么地方可以执行刚才生成的工具呢?官网上说的比较清楚,我也倾向于用bundle的文件来执行。默认情况下,这个文件会在ivy的仓库里面。就拿我的环境来说,其目录如下:
1 [root@CloudGame zips]# pwd 2 /root/.ivy2/local/io.gatling.highcharts/gatling-charts-highcharts-bundle/2.2.0-SNAPSHOT/zips |
文件内容如下:
1 [root@CloudGame gatling-charts-highcharts-bundle-2.2.0-SNAPSHOT]# ll 2 total 28 3 drwxr-xr-x 2 root root 4096 Jan 8 15:04 bin 4 drwxr-xr-x 3 root root 4096 Jan 8 15:04 lib 5 -rw-r--r-- 1 root root 11367 Jan 8 15:04 LICENSE 6 drwxr-xr-x 2 root root 4096 Jan 8 15:04 results 7 drwxr-xr-x 5 root root 4096 Jan 8 15:04 user-files 8 [root@CloudGame gatling-charts-highcharts-bundle-2.2.0-SNAPSHOT]# cd bin/ 9 [root@CloudGame bin]# ll 10 total 16 11 -rwxr--r-- 1 root root 2898 Jan 8 15:04 gatling.bat 12 -rwxr--r-- 1 root root 1946 Jan 8 15:04 gatling.sh 13 -rwxr--r-- 1 root root 1992 Jan 8 15:04 recorder.bat 14 -rwxr--r-- 1 root root 1134 Jan 8 15:04 recorder.sh |
上面加黑的目录,就是我们想要的被解压后的目录,里面有我们期待的内容:
1 [root@CloudGame gatling-bundle-2.2.0-SNAPSHOT]# ll 2 total 24 3 drwxr-xr-x 2 root root 4096 Jan 8 13:26 bin 4 -rw-r--r-- 1 root root 11367 Jan 8 13:10 LICENSE 5 drwxr-xr-x 2 root root 4096 Jan 8 13:26 results 6 drwxr-xr-x 5 root root 4096 Jan 8 13:26 user-files 7 [root@CloudGame gatling-bundle-2.2.0-SNAPSHOT]# cd bin/ 8 [root@CloudGame bin]# ll 9 total 16 10 -rwxr-xr-x 1 root root 2898 Jan 8 13:10 gatling.bat 11 -rwxr-xr-x 1 root root 1946 Jan 8 13:10 gatling.sh 12 -rwxr-xr-x 1 root root 1992 Jan 8 13:10 recorder.bat 13 -rwxr-xr-x 1 root root 1134 Jan 8 13:10 recorder.sh |
到这里,可以说从源码生成gatling的过程结束了!
在此,我要说明一点就是,2.2.0-SNAPSHOT的版本,比较新,里面有些api是JDK8的,所以,在编译运行的时候,保证你的环境是jdk8哟,否则会出现下面的错误:
1 [root@CloudGame bin]# ./recorder.sh 2 GATLING_HOME is set to /root/.ivy2/local/io.gatling.highcharts/gatling-charts-highcharts-bundle/2.2.0-SNAPSHOT/zips/gatling-charts-highcharts-bundle-2.2.0-SNAPSHOT 3 Exception in thread "main" java.lang.UnsupportedClassVersionError: com/typesafe/config/ConfigRenderOptions : Unsupported major.minor version 52.0 4 at java.lang.ClassLoader.defineClass1(Native Method) 5 at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 6 at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 7 at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 8 at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 9 at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 10 at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 11 at java.security.AccessController.doPrivileged(Native Method) 12 at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 13 at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 14 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 15 at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 16 at io.gatling.recorder.config.RecorderConfiguration$.<init>(RecorderConfiguration.scala:48) 17 at io.gatling.recorder.config.RecorderConfiguration$.<clinit>(RecorderConfiguration.scala) 18 at io.gatling.recorder.GatlingRecorder$.io$gatling$recorder$GatlingRecorder$$initRecorder(GatlingRecorder.scala:37) 19 at io.gatling.recorder.GatlingRecorder$$anonfun$fromArgs$1.apply(GatlingRecorder.scala:30) 20 at io.gatling.recorder.GatlingRecorder$$anonfun$fromArgs$1.apply(GatlingRecorder.scala:30) 21 at scala.Option.map(Option.scala:146) 22 at io.gatling.recorder.GatlingRecorder$.fromArgs(GatlingRecorder.scala:30) 23 at io.gatling.recorder.GatlingRecorder$.main(GatlingRecorder.scala:26) 24 at io.gatling.recorder.GatlingRecorder.main(GatlingRecorder.scala) |
最后,测试一下源码来的工具是否可用,哈哈,看到recorder的启动界面了,如下图,说明一切正常!
附加一下设置项目的javaHome的命令,即相关的操作!
1 gatling-parent > set every javaHome := sys.env.get("JAVA_HOME") map file 2 [info] Defining */*:javaHome 3 [info] The new value will be used by gatling-app/*:compilers, gatling-app/*:console::compilers and 125 others. 4 [info] Run `last` for details. 5 [info] Reapplying settings... 6 [info] Set current project to gatling-parent (in build file:/mnt/workwps/gatling2.1.7/gatling/) 7 gatling-parent > show javaHome 8 [info] gatling-core/*:javaHome 9 [info] Some(/usr/java/jdk1.8.0_65) 10 [info] gatling-compiler/*:javaHome 11 [info] Some(/usr/java/jdk1.8.0_65) 12 [info] gatling-redis/*:javaHome 13 [info] Some(/usr/java/jdk1.8.0_65) 14 [info] gatling-metrics/*:javaHome 15 [info] Some(/usr/java/jdk1.8.0_65) 16 [info] gatling-commons/*:javaHome 17 [info] Some(/usr/java/jdk1.8.0_65) 18 [info] gatling-recorder/*:javaHome 19 [info] Some(/usr/java/jdk1.8.0_65) 20 [info] gatling-jms/*:javaHome 21 [info] Some(/usr/java/jdk1.8.0_65) 22 [info] gatling-app/*:javaHome 23 [info] Some(/usr/java/jdk1.8.0_65) 24 [info] gatling-test-framework/*:javaHome 25 [info] Some(/usr/java/jdk1.8.0_65) 26 [info] gatling-http/*:javaHome 27 [info] Some(/usr/java/jdk1.8.0_65) 28 [info] gatling-charts/*:javaHome 29 [info] Some(/usr/java/jdk1.8.0_65) 30 [info] gatling-bundle/*:javaHome 31 [info] Some(/usr/java/jdk1.8.0_65) 32 [info] gatling-jdbc/*:javaHome 33 [info] Some(/usr/java/jdk1.8.0_65) 34 [info] gatling-parent/*:javaHome 35 [info] Some(/usr/java/jdk1.8.0_65) 36 gatling-parent > |
OK,完工!
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。