diff --git a/application/pom.xml b/application/pom.xml index d06fbfa718..6efb019f75 100644 --- a/application/pom.xml +++ b/application/pom.xml @@ -28,14 +28,17 @@ jar Thingsboard Server Application - http://thingsboard.org + https://thingsboard.io + Open-source IoT Platform - Device management, data collection, processing and visualization + UTF-8 ${basedir}/.. thingsboard - /var/log/${pkg.name} + /var/log/${pkg.name} /usr/share/${pkg.name} + ${project.build.directory}/windows @@ -196,6 +199,13 @@ io.springfox springfox-swagger2 + + com.sun.winsw + winsw + bin + exe + provided + org.thingsboard tools @@ -291,6 +301,38 @@ true + + src/main/filters/unix.properties + + + + + copy-win-conf + process-resources + + copy-resources + + + ${pkg.win.dist}/conf + + + src/main/resources + + logback.xml + + false + + + src/main/conf + + thingsboard.conf + + true + + + + src/main/filters/windows.properties + @@ -307,6 +349,28 @@ true + + src/main/filters/unix.properties + + + + + copy-windows-control + process-resources + + copy-resources + + + ${pkg.win.dist} + + + src/main/scripts/windows + true + + + + src/main/filters/windows.properties + @@ -361,6 +425,25 @@ + + copy-winsw-service + package + + copy + + + + + com.sun.winsw + winsw + bin + exe + service.exe + + + ${pkg.win.dist} + + @@ -385,7 +468,7 @@ true ${pkg.installFolder}/conf - ${pkg.logFolder} + ${pkg.unixLogFolder} ${pkg.name}.out @@ -412,7 +495,7 @@ -PmainJar=${project.build.directory}/${project.build.finalName}-boot.${project.packaging} -PpkgName=${pkg.name} -PpkgInstallFolder=${pkg.installFolder} - -PpkgLogFolder=${pkg.logFolder} + -PpkgLogFolder=${pkg.unixLogFolder} @@ -424,6 +507,25 @@ + + org.apache.maven.plugins + maven-assembly-plugin + + ${pkg.name} + + src/main/assembly/windows.xml + + + + + assembly + package + + single + + + + org.xolstice.maven.plugins protobuf-maven-plugin @@ -434,4 +536,14 @@ + + + jenkins + Jenkins Repository + http://repo.jenkins-ci.org/releases + + false + + + diff --git a/application/src/main/assembly/windows.xml b/application/src/main/assembly/windows.xml new file mode 100644 index 0000000000..023c4350a8 --- /dev/null +++ b/application/src/main/assembly/windows.xml @@ -0,0 +1,79 @@ + + + windows + + + zip + + + + + + ${pkg.win.dist} + logs + + */** + + + + ${pkg.win.dist}/conf + conf + windows + + + ${project.build.directory}/extensions + extensions + + + ${project.build.directory}/data + data + + + + + + ${project.build.directory}/${project.build.finalName}-boot.${project.packaging} + lib + ${pkg.name}.jar + + + ${pkg.win.dist}/service.exe + + ${pkg.name}.exe + + + ${pkg.win.dist}/service.xml + + ${pkg.name}.xml + windows + + + ${pkg.win.dist}/install.bat + + windows + + + ${pkg.win.dist}/uninstall.bat + + windows + + + diff --git a/application/src/main/filters/unix.properties b/application/src/main/filters/unix.properties new file mode 100644 index 0000000000..8967278673 --- /dev/null +++ b/application/src/main/filters/unix.properties @@ -0,0 +1 @@ +pkg.logFolder=${pkg.unixLogFolder} \ No newline at end of file diff --git a/application/src/main/filters/windows.properties b/application/src/main/filters/windows.properties new file mode 100644 index 0000000000..a6e48d91ba --- /dev/null +++ b/application/src/main/filters/windows.properties @@ -0,0 +1,2 @@ +pkg.logFolder=${BASE}\\logs +pkg.winWrapperLogFolder=%BASE%\\logs diff --git a/application/src/main/scripts/windows/install.bat b/application/src/main/scripts/windows/install.bat new file mode 100644 index 0000000000..97c4feb503 --- /dev/null +++ b/application/src/main/scripts/windows/install.bat @@ -0,0 +1,90 @@ +@ECHO OFF + +setlocal ENABLEEXTENSIONS + +IF %PROCESSOR_ARCHITECTURE%==AMD64 GOTO CHECK_JAVA_64 +IF %PROCESSOR_ARCHITECTURE%==x86 GOTO CHECK_JAVA_32 + +@ECHO Detecting Java version installed. +:CHECK_JAVA_64 +@ECHO Detecting if it is 64 bit machine +set KEY_NAME="HKEY_LOCAL_MACHINE\Software\Wow6432Node\JavaSoft\Java Runtime Environment" +set VALUE_NAME=CurrentVersion + +FOR /F "usebackq skip=2 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO ( + set ValueName=%%A + set ValueType=%%B + set ValueValue=%%C +) +@ECHO CurrentVersion %ValueValue% + +SET KEY_NAME="%KEY_NAME:~1,-1%\%ValueValue%" +SET VALUE_NAME=JavaHome + +if defined ValueName ( + FOR /F "usebackq skip=2 tokens=1,2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO ( + set ValueName2=%%A + set ValueType2=%%B + set JRE_PATH2=%%C + + if defined ValueName2 ( + set ValueName = %ValueName2% + set ValueType = %ValueType2% + set ValueValue = %JRE_PATH2% + ) + ) +) + +IF NOT "%JRE_PATH2%" == "" GOTO JAVA_INSTALLED +IF "%JRE_PATH2%" == "" GOTO JAVA_NOT_INSTALLED + +:CHECK_JAVA_32 +@ECHO Detecting if it is 32 bit machine +set KEY_NAME="HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment" +set VALUE_NAME=CurrentVersion + +FOR /F "usebackq skip=2 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO ( + set ValueName=%%A + set ValueType=%%B + set ValueValue=%%C +) +@ECHO CurrentVersion %ValueValue% + +SET KEY_NAME="%KEY_NAME:~1,-1%\%ValueValue%" +SET VALUE_NAME=JavaHome + +if defined ValueName ( + FOR /F "usebackq skip=2 tokens=1,2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO ( + set ValueName2=%%A + set ValueType2=%%B + set JRE_PATH2=%%C + + if defined ValueName2 ( + set ValueName = %ValueName2% + set ValueType = %ValueType2% + set ValueValue = %JRE_PATH2% + ) + ) +) + +IF "%JRE_PATH2%" == "" GOTO JAVA_NOT_INSTALLED + +:JAVA_INSTALLED + +@ECHO Java 1.8 found! +@ECHO Installing ${pkg.name} ... +${pkg.name}.exe install + +@ECHO DONE. + +GOTO END + +:JAVA_NOT_INSTALLED +@ECHO Java 1.8 or above is not installed +@ECHO Please go to https://java.com/ and install Java. Then retry installation. +PAUSE +GOTO END + +:END + + diff --git a/application/src/main/scripts/windows/service.xml b/application/src/main/scripts/windows/service.xml new file mode 100644 index 0000000000..b2acc45a8a --- /dev/null +++ b/application/src/main/scripts/windows/service.xml @@ -0,0 +1,12 @@ + + ${pkg.name} + ${project.name} + ${project.description} + %BASE%\conf + ${pkg.winWrapperLogFolder} + rotate + + java + -jar + %BASE%\lib\${pkg.name}.jar + diff --git a/application/src/main/scripts/windows/uninstall.bat b/application/src/main/scripts/windows/uninstall.bat new file mode 100644 index 0000000000..d07cf870ca --- /dev/null +++ b/application/src/main/scripts/windows/uninstall.bat @@ -0,0 +1,9 @@ +@ECHO OFF + +@ECHO Stopping ${pkg.name} ... +net stop ${pkg.name} + +@ECHO Uninstalling ${pkg.name} ... +${pkg.name}.exe uninstall + +@ECHO DONE. \ No newline at end of file diff --git a/pom.xml b/pom.xml index 909e255502..069c00c40b 100755 --- a/pom.xml +++ b/pom.xml @@ -24,12 +24,12 @@ pom Thingsboard - http://thingsboard.io + https://thingsboard.io 2016 ${basedir} - 1.4.2.RELEASE + 1.4.3.RELEASE 4.3.4.RELEASE 4.2.0.RELEASE 0.7.0 @@ -70,6 +70,7 @@ 3.0.2 2.6.1 1.56 + 2.0.1 @@ -127,6 +128,11 @@ maven-jar-plugin 3.0.2 + + org.apache.maven.plugins + maven-assembly-plugin + 3.0.0 + org.springframework.boot spring-boot-maven-plugin @@ -264,6 +270,7 @@ src/font/** src/sh/** src/main/scripts/control/** + src/main/scripts/windows/** JAVADOC_STYLE @@ -700,6 +707,14 @@ bcpkix-jdk15on ${bouncycastle.version} + + com.sun.winsw + winsw + ${winsw.version} + bin + exe + provided +