thingsboard-aplcache
Changes
application/pom.xml 120(+116 -4)
application/src/main/assembly/windows.xml 79(+79 -0)
pom.xml 19(+17 -2)
Details
application/pom.xml 120(+116 -4)
diff --git a/application/pom.xml b/application/pom.xml
index d06fbfa..6efb019 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -28,14 +28,17 @@
<packaging>jar</packaging>
<name>Thingsboard Server Application</name>
- <url>http://thingsboard.org</url>
+ <url>https://thingsboard.io</url>
+ <description>Open-source IoT Platform - Device management, data collection, processing and visualization
+ </description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<main.dir>${basedir}/..</main.dir>
<pkg.name>thingsboard</pkg.name>
- <pkg.logFolder>/var/log/${pkg.name}</pkg.logFolder>
+ <pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder>
<pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder>
+ <pkg.win.dist>${project.build.directory}/windows</pkg.win.dist>
</properties>
<dependencies>
@@ -197,6 +200,13 @@
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
+ <groupId>com.sun.winsw</groupId>
+ <artifactId>winsw</artifactId>
+ <classifier>bin</classifier>
+ <type>exe</type>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.thingsboard</groupId>
<artifactId>tools</artifactId>
<scope>test</scope>
@@ -291,6 +301,38 @@
<filtering>true</filtering>
</resource>
</resources>
+ <filters>
+ <filter>src/main/filters/unix.properties</filter>
+ </filters>
+ </configuration>
+ </execution>
+ <execution>
+ <id>copy-win-conf</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${pkg.win.dist}/conf</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <excludes>
+ <exclude>logback.xml</exclude>
+ </excludes>
+ <filtering>false</filtering>
+ </resource>
+ <resource>
+ <directory>src/main/conf</directory>
+ <excludes>
+ <exclude>thingsboard.conf</exclude>
+ </excludes>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ <filters>
+ <filter>src/main/filters/windows.properties</filter>
+ </filters>
</configuration>
</execution>
<execution>
@@ -307,6 +349,28 @@
<filtering>true</filtering>
</resource>
</resources>
+ <filters>
+ <filter>src/main/filters/unix.properties</filter>
+ </filters>
+ </configuration>
+ </execution>
+ <execution>
+ <id>copy-windows-control</id>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${pkg.win.dist}</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/scripts/windows</directory>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ <filters>
+ <filter>src/main/filters/windows.properties</filter>
+ </filters>
</configuration>
</execution>
<execution>
@@ -361,6 +425,25 @@
</artifactItems>
</configuration>
</execution>
+ <execution>
+ <id>copy-winsw-service</id>
+ <phase>package</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <artifactItems>
+ <artifactItem>
+ <groupId>com.sun.winsw</groupId>
+ <artifactId>winsw</artifactId>
+ <classifier>bin</classifier>
+ <type>exe</type>
+ <destFileName>service.exe</destFileName>
+ </artifactItem>
+ </artifactItems>
+ <outputDirectory>${pkg.win.dist}</outputDirectory>
+ </configuration>
+ </execution>
</executions>
</plugin>
<plugin>
@@ -385,7 +468,7 @@
<excludeDevtools>true</excludeDevtools>
<embeddedLaunchScriptProperties>
<confFolder>${pkg.installFolder}/conf</confFolder>
- <logFolder>${pkg.logFolder}</logFolder>
+ <logFolder>${pkg.unixLogFolder}</logFolder>
<logFilename>${pkg.name}.out</logFilename>
</embeddedLaunchScriptProperties>
</configuration>
@@ -412,7 +495,7 @@
<arg>-PmainJar=${project.build.directory}/${project.build.finalName}-boot.${project.packaging}</arg>
<arg>-PpkgName=${pkg.name}</arg>
<arg>-PpkgInstallFolder=${pkg.installFolder}</arg>
- <arg>-PpkgLogFolder=${pkg.logFolder}</arg>
+ <arg>-PpkgLogFolder=${pkg.unixLogFolder}</arg>
</args>
</configuration>
<executions>
@@ -425,6 +508,25 @@
</executions>
</plugin>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <finalName>${pkg.name}</finalName>
+ <descriptors>
+ <descriptor>src/main/assembly/windows.xml</descriptor>
+ </descriptors>
+ </configuration>
+ <executions>
+ <execution>
+ <id>assembly</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
</plugin>
@@ -434,4 +536,14 @@
</plugin>
</plugins>
</build>
+ <repositories>
+ <repository>
+ <id>jenkins</id>
+ <name>Jenkins Repository</name>
+ <url>http://repo.jenkins-ci.org/releases</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
</project>
application/src/main/assembly/windows.xml 79(+79 -0)
diff --git a/application/src/main/assembly/windows.xml b/application/src/main/assembly/windows.xml
new file mode 100644
index 0000000..023c435
--- /dev/null
+++ b/application/src/main/assembly/windows.xml
@@ -0,0 +1,79 @@
+<!--
+
+ Copyright © 2016-2017 The Thingsboard Authors
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
+ <id>windows</id>
+
+ <formats>
+ <format>zip</format>
+ </formats>
+
+ <!-- Workaround to create logs directory -->
+ <fileSets>
+ <fileSet>
+ <directory>${pkg.win.dist}</directory>
+ <outputDirectory>logs</outputDirectory>
+ <excludes>
+ <exclude>*/**</exclude>
+ </excludes>
+ </fileSet>
+ <fileSet>
+ <directory>${pkg.win.dist}/conf</directory>
+ <outputDirectory>conf</outputDirectory>
+ <lineEnding>windows</lineEnding>
+ </fileSet>
+ <fileSet>
+ <directory>${project.build.directory}/extensions</directory>
+ <outputDirectory>extensions</outputDirectory>
+ </fileSet>
+ <fileSet>
+ <directory>${project.build.directory}/data</directory>
+ <outputDirectory>data</outputDirectory>
+ </fileSet>
+ </fileSets>
+
+ <files>
+ <file>
+ <source>${project.build.directory}/${project.build.finalName}-boot.${project.packaging}</source>
+ <outputDirectory>lib</outputDirectory>
+ <destName>${pkg.name}.jar</destName>
+ </file>
+ <file>
+ <source>${pkg.win.dist}/service.exe</source>
+ <outputDirectory/>
+ <destName>${pkg.name}.exe</destName>
+ </file>
+ <file>
+ <source>${pkg.win.dist}/service.xml</source>
+ <outputDirectory/>
+ <destName>${pkg.name}.xml</destName>
+ <lineEnding>windows</lineEnding>
+ </file>
+ <file>
+ <source>${pkg.win.dist}/install.bat</source>
+ <outputDirectory/>
+ <lineEnding>windows</lineEnding>
+ </file>
+ <file>
+ <source>${pkg.win.dist}/uninstall.bat</source>
+ <outputDirectory/>
+ <lineEnding>windows</lineEnding>
+ </file>
+ </files>
+</assembly>
diff --git a/application/src/main/filters/unix.properties b/application/src/main/filters/unix.properties
new file mode 100644
index 0000000..8967278
--- /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 0000000..a6e48d9
--- /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 0000000..97c4feb
--- /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 0000000..b2acc45
--- /dev/null
+++ b/application/src/main/scripts/windows/service.xml
@@ -0,0 +1,12 @@
+<service>
+ <id>${pkg.name}</id>
+ <name>${project.name}</name>
+ <description>${project.description}</description>
+ <workingdirectory>%BASE%\conf</workingdirectory>
+ <logpath>${pkg.winWrapperLogFolder}</logpath>
+ <logmode>rotate</logmode>
+ <env name="LOADER_PATH" value="%BASE%\conf,%BASE%\extensions" />
+ <executable>java</executable>
+ <startargument>-jar</startargument>
+ <startargument>%BASE%\lib\${pkg.name}.jar</startargument>
+</service>
diff --git a/application/src/main/scripts/windows/uninstall.bat b/application/src/main/scripts/windows/uninstall.bat
new file mode 100644
index 0000000..d07cf87
--- /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
pom.xml 19(+17 -2)
diff --git a/pom.xml b/pom.xml
index 909e255..069c00c 100755
--- a/pom.xml
+++ b/pom.xml
@@ -24,12 +24,12 @@
<packaging>pom</packaging>
<name>Thingsboard</name>
- <url>http://thingsboard.io</url>
+ <url>https://thingsboard.io</url>
<inceptionYear>2016</inceptionYear>
<properties>
<main.dir>${basedir}</main.dir>
- <spring-boot.version>1.4.2.RELEASE</spring-boot.version>
+ <spring-boot.version>1.4.3.RELEASE</spring-boot.version>
<spring.version>4.3.4.RELEASE</spring.version>
<spring-security.version>4.2.0.RELEASE</spring-security.version>
<jjwt.version>0.7.0</jjwt.version>
@@ -70,6 +70,7 @@
<jar-plugin.version>3.0.2</jar-plugin.version>
<springfox-swagger.version>2.6.1</springfox-swagger.version>
<bouncycastle.version>1.56</bouncycastle.version>
+ <winsw.version>2.0.1</winsw.version>
</properties>
<modules>
@@ -128,6 +129,11 @@
<version>3.0.2</version>
</plugin>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>3.0.0</version>
+ </plugin>
+ <plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
@@ -264,6 +270,7 @@
<exclude>src/font/**</exclude>
<exclude>src/sh/**</exclude>
<exclude>src/main/scripts/control/**</exclude>
+ <exclude>src/main/scripts/windows/**</exclude>
</excludes>
<mapping>
<proto>JAVADOC_STYLE</proto>
@@ -700,6 +707,14 @@
<artifactId>bcpkix-jdk15on</artifactId>
<version>${bouncycastle.version}</version>
</dependency>
+ <dependency>
+ <groupId>com.sun.winsw</groupId>
+ <artifactId>winsw</artifactId>
+ <version>${winsw.version}</version>
+ <classifier>bin</classifier>
+ <type>exe</type>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
</dependencyManagement>