Commit 9e0b94b9d84dcfed465c3456476c86dac1387849
Committed by
GitHub
1 parent
0ffac9c2
TB-40: Windows installation package for thingsboard application (#45)
Showing
8 changed files
with
326 additions
and
6 deletions
@@ -28,14 +28,17 @@ | @@ -28,14 +28,17 @@ | ||
28 | <packaging>jar</packaging> | 28 | <packaging>jar</packaging> |
29 | 29 | ||
30 | <name>Thingsboard Server Application</name> | 30 | <name>Thingsboard Server Application</name> |
31 | - <url>http://thingsboard.org</url> | 31 | + <url>https://thingsboard.io</url> |
32 | + <description>Open-source IoT Platform - Device management, data collection, processing and visualization | ||
33 | + </description> | ||
32 | 34 | ||
33 | <properties> | 35 | <properties> |
34 | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | 36 | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
35 | <main.dir>${basedir}/..</main.dir> | 37 | <main.dir>${basedir}/..</main.dir> |
36 | <pkg.name>thingsboard</pkg.name> | 38 | <pkg.name>thingsboard</pkg.name> |
37 | - <pkg.logFolder>/var/log/${pkg.name}</pkg.logFolder> | 39 | + <pkg.unixLogFolder>/var/log/${pkg.name}</pkg.unixLogFolder> |
38 | <pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder> | 40 | <pkg.installFolder>/usr/share/${pkg.name}</pkg.installFolder> |
41 | + <pkg.win.dist>${project.build.directory}/windows</pkg.win.dist> | ||
39 | </properties> | 42 | </properties> |
40 | 43 | ||
41 | <dependencies> | 44 | <dependencies> |
@@ -197,6 +200,13 @@ | @@ -197,6 +200,13 @@ | ||
197 | <artifactId>springfox-swagger2</artifactId> | 200 | <artifactId>springfox-swagger2</artifactId> |
198 | </dependency> | 201 | </dependency> |
199 | <dependency> | 202 | <dependency> |
203 | + <groupId>com.sun.winsw</groupId> | ||
204 | + <artifactId>winsw</artifactId> | ||
205 | + <classifier>bin</classifier> | ||
206 | + <type>exe</type> | ||
207 | + <scope>provided</scope> | ||
208 | + </dependency> | ||
209 | + <dependency> | ||
200 | <groupId>org.thingsboard</groupId> | 210 | <groupId>org.thingsboard</groupId> |
201 | <artifactId>tools</artifactId> | 211 | <artifactId>tools</artifactId> |
202 | <scope>test</scope> | 212 | <scope>test</scope> |
@@ -291,6 +301,38 @@ | @@ -291,6 +301,38 @@ | ||
291 | <filtering>true</filtering> | 301 | <filtering>true</filtering> |
292 | </resource> | 302 | </resource> |
293 | </resources> | 303 | </resources> |
304 | + <filters> | ||
305 | + <filter>src/main/filters/unix.properties</filter> | ||
306 | + </filters> | ||
307 | + </configuration> | ||
308 | + </execution> | ||
309 | + <execution> | ||
310 | + <id>copy-win-conf</id> | ||
311 | + <phase>process-resources</phase> | ||
312 | + <goals> | ||
313 | + <goal>copy-resources</goal> | ||
314 | + </goals> | ||
315 | + <configuration> | ||
316 | + <outputDirectory>${pkg.win.dist}/conf</outputDirectory> | ||
317 | + <resources> | ||
318 | + <resource> | ||
319 | + <directory>src/main/resources</directory> | ||
320 | + <excludes> | ||
321 | + <exclude>logback.xml</exclude> | ||
322 | + </excludes> | ||
323 | + <filtering>false</filtering> | ||
324 | + </resource> | ||
325 | + <resource> | ||
326 | + <directory>src/main/conf</directory> | ||
327 | + <excludes> | ||
328 | + <exclude>thingsboard.conf</exclude> | ||
329 | + </excludes> | ||
330 | + <filtering>true</filtering> | ||
331 | + </resource> | ||
332 | + </resources> | ||
333 | + <filters> | ||
334 | + <filter>src/main/filters/windows.properties</filter> | ||
335 | + </filters> | ||
294 | </configuration> | 336 | </configuration> |
295 | </execution> | 337 | </execution> |
296 | <execution> | 338 | <execution> |
@@ -307,6 +349,28 @@ | @@ -307,6 +349,28 @@ | ||
307 | <filtering>true</filtering> | 349 | <filtering>true</filtering> |
308 | </resource> | 350 | </resource> |
309 | </resources> | 351 | </resources> |
352 | + <filters> | ||
353 | + <filter>src/main/filters/unix.properties</filter> | ||
354 | + </filters> | ||
355 | + </configuration> | ||
356 | + </execution> | ||
357 | + <execution> | ||
358 | + <id>copy-windows-control</id> | ||
359 | + <phase>process-resources</phase> | ||
360 | + <goals> | ||
361 | + <goal>copy-resources</goal> | ||
362 | + </goals> | ||
363 | + <configuration> | ||
364 | + <outputDirectory>${pkg.win.dist}</outputDirectory> | ||
365 | + <resources> | ||
366 | + <resource> | ||
367 | + <directory>src/main/scripts/windows</directory> | ||
368 | + <filtering>true</filtering> | ||
369 | + </resource> | ||
370 | + </resources> | ||
371 | + <filters> | ||
372 | + <filter>src/main/filters/windows.properties</filter> | ||
373 | + </filters> | ||
310 | </configuration> | 374 | </configuration> |
311 | </execution> | 375 | </execution> |
312 | <execution> | 376 | <execution> |
@@ -361,6 +425,25 @@ | @@ -361,6 +425,25 @@ | ||
361 | </artifactItems> | 425 | </artifactItems> |
362 | </configuration> | 426 | </configuration> |
363 | </execution> | 427 | </execution> |
428 | + <execution> | ||
429 | + <id>copy-winsw-service</id> | ||
430 | + <phase>package</phase> | ||
431 | + <goals> | ||
432 | + <goal>copy</goal> | ||
433 | + </goals> | ||
434 | + <configuration> | ||
435 | + <artifactItems> | ||
436 | + <artifactItem> | ||
437 | + <groupId>com.sun.winsw</groupId> | ||
438 | + <artifactId>winsw</artifactId> | ||
439 | + <classifier>bin</classifier> | ||
440 | + <type>exe</type> | ||
441 | + <destFileName>service.exe</destFileName> | ||
442 | + </artifactItem> | ||
443 | + </artifactItems> | ||
444 | + <outputDirectory>${pkg.win.dist}</outputDirectory> | ||
445 | + </configuration> | ||
446 | + </execution> | ||
364 | </executions> | 447 | </executions> |
365 | </plugin> | 448 | </plugin> |
366 | <plugin> | 449 | <plugin> |
@@ -385,7 +468,7 @@ | @@ -385,7 +468,7 @@ | ||
385 | <excludeDevtools>true</excludeDevtools> | 468 | <excludeDevtools>true</excludeDevtools> |
386 | <embeddedLaunchScriptProperties> | 469 | <embeddedLaunchScriptProperties> |
387 | <confFolder>${pkg.installFolder}/conf</confFolder> | 470 | <confFolder>${pkg.installFolder}/conf</confFolder> |
388 | - <logFolder>${pkg.logFolder}</logFolder> | 471 | + <logFolder>${pkg.unixLogFolder}</logFolder> |
389 | <logFilename>${pkg.name}.out</logFilename> | 472 | <logFilename>${pkg.name}.out</logFilename> |
390 | </embeddedLaunchScriptProperties> | 473 | </embeddedLaunchScriptProperties> |
391 | </configuration> | 474 | </configuration> |
@@ -412,7 +495,7 @@ | @@ -412,7 +495,7 @@ | ||
412 | <arg>-PmainJar=${project.build.directory}/${project.build.finalName}-boot.${project.packaging}</arg> | 495 | <arg>-PmainJar=${project.build.directory}/${project.build.finalName}-boot.${project.packaging}</arg> |
413 | <arg>-PpkgName=${pkg.name}</arg> | 496 | <arg>-PpkgName=${pkg.name}</arg> |
414 | <arg>-PpkgInstallFolder=${pkg.installFolder}</arg> | 497 | <arg>-PpkgInstallFolder=${pkg.installFolder}</arg> |
415 | - <arg>-PpkgLogFolder=${pkg.logFolder}</arg> | 498 | + <arg>-PpkgLogFolder=${pkg.unixLogFolder}</arg> |
416 | </args> | 499 | </args> |
417 | </configuration> | 500 | </configuration> |
418 | <executions> | 501 | <executions> |
@@ -425,6 +508,25 @@ | @@ -425,6 +508,25 @@ | ||
425 | </executions> | 508 | </executions> |
426 | </plugin> | 509 | </plugin> |
427 | <plugin> | 510 | <plugin> |
511 | + <groupId>org.apache.maven.plugins</groupId> | ||
512 | + <artifactId>maven-assembly-plugin</artifactId> | ||
513 | + <configuration> | ||
514 | + <finalName>${pkg.name}</finalName> | ||
515 | + <descriptors> | ||
516 | + <descriptor>src/main/assembly/windows.xml</descriptor> | ||
517 | + </descriptors> | ||
518 | + </configuration> | ||
519 | + <executions> | ||
520 | + <execution> | ||
521 | + <id>assembly</id> | ||
522 | + <phase>package</phase> | ||
523 | + <goals> | ||
524 | + <goal>single</goal> | ||
525 | + </goals> | ||
526 | + </execution> | ||
527 | + </executions> | ||
528 | + </plugin> | ||
529 | + <plugin> | ||
428 | <groupId>org.xolstice.maven.plugins</groupId> | 530 | <groupId>org.xolstice.maven.plugins</groupId> |
429 | <artifactId>protobuf-maven-plugin</artifactId> | 531 | <artifactId>protobuf-maven-plugin</artifactId> |
430 | </plugin> | 532 | </plugin> |
@@ -434,4 +536,14 @@ | @@ -434,4 +536,14 @@ | ||
434 | </plugin> | 536 | </plugin> |
435 | </plugins> | 537 | </plugins> |
436 | </build> | 538 | </build> |
539 | + <repositories> | ||
540 | + <repository> | ||
541 | + <id>jenkins</id> | ||
542 | + <name>Jenkins Repository</name> | ||
543 | + <url>http://repo.jenkins-ci.org/releases</url> | ||
544 | + <snapshots> | ||
545 | + <enabled>false</enabled> | ||
546 | + </snapshots> | ||
547 | + </repository> | ||
548 | + </repositories> | ||
437 | </project> | 549 | </project> |
application/src/main/assembly/windows.xml
0 → 100644
1 | +<!-- | ||
2 | + | ||
3 | + Copyright © 2016-2017 The Thingsboard Authors | ||
4 | + | ||
5 | + Licensed under the Apache License, Version 2.0 (the "License"); | ||
6 | + you may not use this file except in compliance with the License. | ||
7 | + You may obtain a copy of the License at | ||
8 | + | ||
9 | + http://www.apache.org/licenses/LICENSE-2.0 | ||
10 | + | ||
11 | + Unless required by applicable law or agreed to in writing, software | ||
12 | + distributed under the License is distributed on an "AS IS" BASIS, | ||
13 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
14 | + See the License for the specific language governing permissions and | ||
15 | + limitations under the License. | ||
16 | + | ||
17 | +--> | ||
18 | +<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" | ||
19 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
20 | + xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> | ||
21 | + <id>windows</id> | ||
22 | + | ||
23 | + <formats> | ||
24 | + <format>zip</format> | ||
25 | + </formats> | ||
26 | + | ||
27 | + <!-- Workaround to create logs directory --> | ||
28 | + <fileSets> | ||
29 | + <fileSet> | ||
30 | + <directory>${pkg.win.dist}</directory> | ||
31 | + <outputDirectory>logs</outputDirectory> | ||
32 | + <excludes> | ||
33 | + <exclude>*/**</exclude> | ||
34 | + </excludes> | ||
35 | + </fileSet> | ||
36 | + <fileSet> | ||
37 | + <directory>${pkg.win.dist}/conf</directory> | ||
38 | + <outputDirectory>conf</outputDirectory> | ||
39 | + <lineEnding>windows</lineEnding> | ||
40 | + </fileSet> | ||
41 | + <fileSet> | ||
42 | + <directory>${project.build.directory}/extensions</directory> | ||
43 | + <outputDirectory>extensions</outputDirectory> | ||
44 | + </fileSet> | ||
45 | + <fileSet> | ||
46 | + <directory>${project.build.directory}/data</directory> | ||
47 | + <outputDirectory>data</outputDirectory> | ||
48 | + </fileSet> | ||
49 | + </fileSets> | ||
50 | + | ||
51 | + <files> | ||
52 | + <file> | ||
53 | + <source>${project.build.directory}/${project.build.finalName}-boot.${project.packaging}</source> | ||
54 | + <outputDirectory>lib</outputDirectory> | ||
55 | + <destName>${pkg.name}.jar</destName> | ||
56 | + </file> | ||
57 | + <file> | ||
58 | + <source>${pkg.win.dist}/service.exe</source> | ||
59 | + <outputDirectory/> | ||
60 | + <destName>${pkg.name}.exe</destName> | ||
61 | + </file> | ||
62 | + <file> | ||
63 | + <source>${pkg.win.dist}/service.xml</source> | ||
64 | + <outputDirectory/> | ||
65 | + <destName>${pkg.name}.xml</destName> | ||
66 | + <lineEnding>windows</lineEnding> | ||
67 | + </file> | ||
68 | + <file> | ||
69 | + <source>${pkg.win.dist}/install.bat</source> | ||
70 | + <outputDirectory/> | ||
71 | + <lineEnding>windows</lineEnding> | ||
72 | + </file> | ||
73 | + <file> | ||
74 | + <source>${pkg.win.dist}/uninstall.bat</source> | ||
75 | + <outputDirectory/> | ||
76 | + <lineEnding>windows</lineEnding> | ||
77 | + </file> | ||
78 | + </files> | ||
79 | +</assembly> |
application/src/main/filters/unix.properties
0 → 100644
1 | +pkg.logFolder=${pkg.unixLogFolder} |
1 | +@ECHO OFF | ||
2 | + | ||
3 | +setlocal ENABLEEXTENSIONS | ||
4 | + | ||
5 | +IF %PROCESSOR_ARCHITECTURE%==AMD64 GOTO CHECK_JAVA_64 | ||
6 | +IF %PROCESSOR_ARCHITECTURE%==x86 GOTO CHECK_JAVA_32 | ||
7 | + | ||
8 | +@ECHO Detecting Java version installed. | ||
9 | +:CHECK_JAVA_64 | ||
10 | +@ECHO Detecting if it is 64 bit machine | ||
11 | +set KEY_NAME="HKEY_LOCAL_MACHINE\Software\Wow6432Node\JavaSoft\Java Runtime Environment" | ||
12 | +set VALUE_NAME=CurrentVersion | ||
13 | + | ||
14 | +FOR /F "usebackq skip=2 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO ( | ||
15 | + set ValueName=%%A | ||
16 | + set ValueType=%%B | ||
17 | + set ValueValue=%%C | ||
18 | +) | ||
19 | +@ECHO CurrentVersion %ValueValue% | ||
20 | + | ||
21 | +SET KEY_NAME="%KEY_NAME:~1,-1%\%ValueValue%" | ||
22 | +SET VALUE_NAME=JavaHome | ||
23 | + | ||
24 | +if defined ValueName ( | ||
25 | + FOR /F "usebackq skip=2 tokens=1,2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO ( | ||
26 | + set ValueName2=%%A | ||
27 | + set ValueType2=%%B | ||
28 | + set JRE_PATH2=%%C | ||
29 | + | ||
30 | + if defined ValueName2 ( | ||
31 | + set ValueName = %ValueName2% | ||
32 | + set ValueType = %ValueType2% | ||
33 | + set ValueValue = %JRE_PATH2% | ||
34 | + ) | ||
35 | + ) | ||
36 | +) | ||
37 | + | ||
38 | +IF NOT "%JRE_PATH2%" == "" GOTO JAVA_INSTALLED | ||
39 | +IF "%JRE_PATH2%" == "" GOTO JAVA_NOT_INSTALLED | ||
40 | + | ||
41 | +:CHECK_JAVA_32 | ||
42 | +@ECHO Detecting if it is 32 bit machine | ||
43 | +set KEY_NAME="HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment" | ||
44 | +set VALUE_NAME=CurrentVersion | ||
45 | + | ||
46 | +FOR /F "usebackq skip=2 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO ( | ||
47 | + set ValueName=%%A | ||
48 | + set ValueType=%%B | ||
49 | + set ValueValue=%%C | ||
50 | +) | ||
51 | +@ECHO CurrentVersion %ValueValue% | ||
52 | + | ||
53 | +SET KEY_NAME="%KEY_NAME:~1,-1%\%ValueValue%" | ||
54 | +SET VALUE_NAME=JavaHome | ||
55 | + | ||
56 | +if defined ValueName ( | ||
57 | + FOR /F "usebackq skip=2 tokens=1,2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO ( | ||
58 | + set ValueName2=%%A | ||
59 | + set ValueType2=%%B | ||
60 | + set JRE_PATH2=%%C | ||
61 | + | ||
62 | + if defined ValueName2 ( | ||
63 | + set ValueName = %ValueName2% | ||
64 | + set ValueType = %ValueType2% | ||
65 | + set ValueValue = %JRE_PATH2% | ||
66 | + ) | ||
67 | + ) | ||
68 | +) | ||
69 | + | ||
70 | +IF "%JRE_PATH2%" == "" GOTO JAVA_NOT_INSTALLED | ||
71 | + | ||
72 | +:JAVA_INSTALLED | ||
73 | + | ||
74 | +@ECHO Java 1.8 found! | ||
75 | +@ECHO Installing ${pkg.name} ... | ||
76 | +${pkg.name}.exe install | ||
77 | + | ||
78 | +@ECHO DONE. | ||
79 | + | ||
80 | +GOTO END | ||
81 | + | ||
82 | +:JAVA_NOT_INSTALLED | ||
83 | +@ECHO Java 1.8 or above is not installed | ||
84 | +@ECHO Please go to https://java.com/ and install Java. Then retry installation. | ||
85 | +PAUSE | ||
86 | +GOTO END | ||
87 | + | ||
88 | +:END | ||
89 | + | ||
90 | + |
1 | +<service> | ||
2 | + <id>${pkg.name}</id> | ||
3 | + <name>${project.name}</name> | ||
4 | + <description>${project.description}</description> | ||
5 | + <workingdirectory>%BASE%\conf</workingdirectory> | ||
6 | + <logpath>${pkg.winWrapperLogFolder}</logpath> | ||
7 | + <logmode>rotate</logmode> | ||
8 | + <env name="LOADER_PATH" value="%BASE%\conf,%BASE%\extensions" /> | ||
9 | + <executable>java</executable> | ||
10 | + <startargument>-jar</startargument> | ||
11 | + <startargument>%BASE%\lib\${pkg.name}.jar</startargument> | ||
12 | +</service> |
@@ -24,12 +24,12 @@ | @@ -24,12 +24,12 @@ | ||
24 | <packaging>pom</packaging> | 24 | <packaging>pom</packaging> |
25 | 25 | ||
26 | <name>Thingsboard</name> | 26 | <name>Thingsboard</name> |
27 | - <url>http://thingsboard.io</url> | 27 | + <url>https://thingsboard.io</url> |
28 | <inceptionYear>2016</inceptionYear> | 28 | <inceptionYear>2016</inceptionYear> |
29 | 29 | ||
30 | <properties> | 30 | <properties> |
31 | <main.dir>${basedir}</main.dir> | 31 | <main.dir>${basedir}</main.dir> |
32 | - <spring-boot.version>1.4.2.RELEASE</spring-boot.version> | 32 | + <spring-boot.version>1.4.3.RELEASE</spring-boot.version> |
33 | <spring.version>4.3.4.RELEASE</spring.version> | 33 | <spring.version>4.3.4.RELEASE</spring.version> |
34 | <spring-security.version>4.2.0.RELEASE</spring-security.version> | 34 | <spring-security.version>4.2.0.RELEASE</spring-security.version> |
35 | <jjwt.version>0.7.0</jjwt.version> | 35 | <jjwt.version>0.7.0</jjwt.version> |
@@ -70,6 +70,7 @@ | @@ -70,6 +70,7 @@ | ||
70 | <jar-plugin.version>3.0.2</jar-plugin.version> | 70 | <jar-plugin.version>3.0.2</jar-plugin.version> |
71 | <springfox-swagger.version>2.6.1</springfox-swagger.version> | 71 | <springfox-swagger.version>2.6.1</springfox-swagger.version> |
72 | <bouncycastle.version>1.56</bouncycastle.version> | 72 | <bouncycastle.version>1.56</bouncycastle.version> |
73 | + <winsw.version>2.0.1</winsw.version> | ||
73 | </properties> | 74 | </properties> |
74 | 75 | ||
75 | <modules> | 76 | <modules> |
@@ -128,6 +129,11 @@ | @@ -128,6 +129,11 @@ | ||
128 | <version>3.0.2</version> | 129 | <version>3.0.2</version> |
129 | </plugin> | 130 | </plugin> |
130 | <plugin> | 131 | <plugin> |
132 | + <groupId>org.apache.maven.plugins</groupId> | ||
133 | + <artifactId>maven-assembly-plugin</artifactId> | ||
134 | + <version>3.0.0</version> | ||
135 | + </plugin> | ||
136 | + <plugin> | ||
131 | <groupId>org.springframework.boot</groupId> | 137 | <groupId>org.springframework.boot</groupId> |
132 | <artifactId>spring-boot-maven-plugin</artifactId> | 138 | <artifactId>spring-boot-maven-plugin</artifactId> |
133 | <version>${spring-boot.version}</version> | 139 | <version>${spring-boot.version}</version> |
@@ -264,6 +270,7 @@ | @@ -264,6 +270,7 @@ | ||
264 | <exclude>src/font/**</exclude> | 270 | <exclude>src/font/**</exclude> |
265 | <exclude>src/sh/**</exclude> | 271 | <exclude>src/sh/**</exclude> |
266 | <exclude>src/main/scripts/control/**</exclude> | 272 | <exclude>src/main/scripts/control/**</exclude> |
273 | + <exclude>src/main/scripts/windows/**</exclude> | ||
267 | </excludes> | 274 | </excludes> |
268 | <mapping> | 275 | <mapping> |
269 | <proto>JAVADOC_STYLE</proto> | 276 | <proto>JAVADOC_STYLE</proto> |
@@ -700,6 +707,14 @@ | @@ -700,6 +707,14 @@ | ||
700 | <artifactId>bcpkix-jdk15on</artifactId> | 707 | <artifactId>bcpkix-jdk15on</artifactId> |
701 | <version>${bouncycastle.version}</version> | 708 | <version>${bouncycastle.version}</version> |
702 | </dependency> | 709 | </dependency> |
710 | + <dependency> | ||
711 | + <groupId>com.sun.winsw</groupId> | ||
712 | + <artifactId>winsw</artifactId> | ||
713 | + <version>${winsw.version}</version> | ||
714 | + <classifier>bin</classifier> | ||
715 | + <type>exe</type> | ||
716 | + <scope>provided</scope> | ||
717 | + </dependency> | ||
703 | </dependencies> | 718 | </dependencies> |
704 | </dependencyManagement> | 719 | </dependencyManagement> |
705 | 720 |