目录
前言
环境准备
下载源代码
编译和运行
参考
前言
本文介绍如何在本地环境编译、运行AppRunner。
环境准备
Java 1.8+
D:>java -version java version "11.0.9" 2020-10-20 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.9+7-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.9+7-LTS, mixed mode)
git
D:>git version git version 2.27.0.windows.1
maven
D:>mvn -v D: Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: D:sandboxapache-maven-3.6.3bin.. Java version: 11.0.9, vendor: Oracle Corporation, runtime: D:sandboxJavajdk-11.0.9 Default locale: zh_CN, platform encoding: GBK OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
设置M2_HOME环境变量
D:>echo %M2_HOME% D:sandboxapache-maven-3.6.3
网络:由于国内上github不稳定,建议自备科学上网
下载源代码
代码已开源 https://github.com/danielflower/app-runner
git clone https://github.com/danielflower/app-runner.git
编译和运行
1. 用IntelliJ(或其他IDE)打开工程
2. 进行mvn clean install,所有unit test都应该通过且maven build成功
3. 运行RunLocal里的main方法
4. 看到如下日志表示运行成功
00:23:43,935 [main] INFO Config - Using config file: D:sandboxcodeapp-runnersample-config.properties
00:23:44,009 [main] INFO App - SystemInfo{hostName='LAPTOP-ODF35RAF', user='bin9w', pid=14992, publicKeys=[], osName='Windows 10', numCpus=8}
00:23:44,016 [main] INFO App - Deleting contents of temporary folder at D:sandboxcodeapp-runnertargetlocaltemp
00:23:44,022 [main] INFO App - File deletion complete in 7ms
00:23:44,024 [main] INFO App - Detecting providers...
00:23:45,260 [main] INFO App - Registered providers...
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) - Maven home: D:sandboxapache-maven-3.6.3bin.. - Java version: 11.0.9, vendor: Oracle Corporation, runtime: D:sandboxJavajdk-11.0.9 - Default locale: zh_CN, platform encoding: GBK - OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
Node v12.18.3 with NPM 6.14.6
00:23:45,262 [main] INFO AppEstate - Loading app [app-runner-home] (git:https://github.com/danielflower/app-runner-home.git)
00:23:45,515 [main] INFO AppManager - Clone app app-runner-home from https://github.com/danielflower/app-runner-home.git to D:sandboxcodeapp-runnertargetlocalreposapp-runner-home
00:24:25,602 [main] INFO AppManager - Created app manager for app-runner-home in dir D:sandboxcodeapp-runnertargetlocalappsapp-runner-homedata
00:24:26,274 [main] INFO WebServer - Started web server at null / http://localhost:8080
00:24:27,098 [pool-5-thread-1] INFO AppManager - getting the contributors [dependabot[bot], Daniel Flower, Stephen Benson, Rajesh Shah, Rika]
00:24:27,125 [pool-5-thread-1] INFO AppManager - Using maven for app-runner-home
00:24:27,128 [pool-5-thread-1] INFO MavenRunner - Building maven project at D:sandboxcodeapp-runnertargetlocaltempapp-runner-homeinstances1636993467099
00:24:34,122 [pool-5-thread-1] INFO MavenRunner - Build successful. Going to start app.
00:24:34,139 [pool-5-thread-1] INFO ProcessStarter - Starting D:sandboxcodeapp-runnertargetlocaltempapp-runner-homeinstances1636993467099> D:sandboxJavajdk-11.0.9binjava.exe -Djava.io.tmpdir=D:sandboxcodeapp-runnertargetlocaltempapp-runner-home -jar targetapp-runner-home-1.0-SNAPSHOT.jar
00:24:35,309 [pool-5-thread-1] INFO ProcessStarter - Completed D:sandboxJavajdk-11.0.9binjava.exe in 1170ms
00:24:35,320 [pool-5-thread-1] INFO ProxyMap - app-runner-home maps to http://localhost:50019/app-runner-home
这时在浏览器打开http://localhost:8080/app-runner-home/就可以看到AppRunner主页了,证明本地运行成功。
5. 我曾经看到过如下错误日志,是连接github不稳定导致的,重跑几次解决了。
00:19:35,774 [main] INFO AppEstate - Loading app [app-runner-home] (git:https://github.com/danielflower/app-runner-home.git) 00:19:36,019 [main] INFO AppManager - Clone app app-runner-home from https://github.com/danielflower/app-runner-home.git to D:sandboxcodeapp-runnertargetlocalreposapp-runner-home 00:20:16,222 [main] WARN App - Error while trying to initiliase app-runner-home (https://github.com/danielflower/app-runner-home.git) - will ignore this app. org.eclipse.jgit.api.errors.TransportException: https://github.com/danielflower/app-runner-home.git: cannot open git-upload-pack at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:222) at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:302) at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:178) at com.danielflower.apprunner.mgmt.AppManager.create(AppManager.java:71) at com.danielflower.apprunner.AppEstate.addApp(AppEstate.java:63) at com.danielflower.apprunner.App.start(App.java:72) at com.danielflower.apprunner.App.main(App.java:214) at com.danielflower.apprunner.RunLocal.main(RunLocal.java:10) Caused by: org.eclipse.jgit.errors.TransportException: https://github.com/danielflower/app-runner-home.git: cannot open git-upload-pack at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:605) at org.eclipse.jgit.transport.TransportHttp.openFetch(TransportHttp.java:362) at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:105) at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:91) at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1260) at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:211) ... 7 common frames omitted Caused by: javax.net.ssl.SSLException: Connection reset at java.base/sun.security.ssl.alert.createSSLException(alert.java:127) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:353) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:296) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:291) at java.base/sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1522) at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:965) at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:252) at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:292) at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:351) at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:746) at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689) at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:717) at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1615) at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1520) at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:527) at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:334) at org.eclipse.jgit.transport.http.JDKHttpConnection.getResponseCode(JDKHttpConnection.java:85) at org.eclipse.jgit.util.HttpSupport.response(HttpSupport.java:208) at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:510) ... 12 common frames omitted Suppressed: java.net.SocketException: Connection reset by peer: socket write error at java.base/java.net.SocketOutputStream.socketWrite0(Native Method) at java.base/java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110) at java.base/java.net.SocketOutputStream.write(SocketOutputStream.java:150) at java.base/sun.security.ssl.SSLSocketOutputRecord.encodealert(SSLSocketOutputRecord.java:83) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:384) ... 29 common frames omitted Caused by: java.net.SocketException: Connection reset at java.base/java.net.SocketInputStream.read(SocketInputStream.java:186) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140) at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:476) at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:470) at java.base/sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:70) at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1308) at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:949) ... 25 common frames omitted 00:20:17,062 [main] INFO WebServer - Started web server at null / http://localhost:8080
参考
https://github.com/danielflower/app-runner



