26 changed files with 825 additions and 70 deletions
@ -1,64 +0,0 @@ |
|||||
<!-- |
|
||||
|
|
||||
Copyright © 2016-2018 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. |
|
||||
|
|
||||
--> |
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
|
||||
<modelVersion>4.0.0</modelVersion> |
|
||||
<parent> |
|
||||
<groupId>org.thingsboard</groupId> |
|
||||
<version>2.2.0-SNAPSHOT</version> |
|
||||
<artifactId>transport</artifactId> |
|
||||
</parent> |
|
||||
<groupId>org.thingsboard.transport</groupId> |
|
||||
<artifactId>mqtt-transport</artifactId> |
|
||||
<packaging>jar</packaging> |
|
||||
|
|
||||
<name>Thingsboard MQTT Transport Service</name> |
|
||||
<url>https://thingsboard.io</url> |
|
||||
|
|
||||
<properties> |
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
|
||||
<main.dir>${basedir}/../..</main.dir> |
|
||||
</properties> |
|
||||
|
|
||||
<dependencies> |
|
||||
<dependency> |
|
||||
<groupId>org.thingsboard.common.transport</groupId> |
|
||||
<artifactId>mqtt</artifactId> |
|
||||
</dependency> |
|
||||
<dependency> |
|
||||
<groupId>org.thingsboard.common</groupId> |
|
||||
<artifactId>queue</artifactId> |
|
||||
</dependency> |
|
||||
<dependency> |
|
||||
<groupId>org.springframework.boot</groupId> |
|
||||
<artifactId>spring-boot-starter-test</artifactId> |
|
||||
<scope>test</scope> |
|
||||
</dependency> |
|
||||
<dependency> |
|
||||
<groupId>junit</groupId> |
|
||||
<artifactId>junit</artifactId> |
|
||||
<scope>test</scope> |
|
||||
</dependency> |
|
||||
<dependency> |
|
||||
<groupId>org.mockito</groupId> |
|
||||
<artifactId>mockito-all</artifactId> |
|
||||
<scope>test</scope> |
|
||||
</dependency> |
|
||||
</dependencies> |
|
||||
|
|
||||
</project> |
|
||||
@ -0,0 +1,140 @@ |
|||||
|
/** |
||||
|
* Copyright © 2016-2018 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. |
||||
|
*/ |
||||
|
import org.apache.tools.ant.filters.ReplaceTokens |
||||
|
|
||||
|
buildscript { |
||||
|
ext { |
||||
|
osPackageVersion = "3.8.0" |
||||
|
} |
||||
|
repositories { |
||||
|
jcenter() |
||||
|
} |
||||
|
dependencies { |
||||
|
classpath("com.netflix.nebula:gradle-ospackage-plugin:${osPackageVersion}") |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
apply plugin: "nebula.ospackage" |
||||
|
|
||||
|
buildDir = projectBuildDir |
||||
|
version = projectVersion |
||||
|
distsDirName = "./" |
||||
|
|
||||
|
// OS Package plugin configuration |
||||
|
ospackage { |
||||
|
packageName = pkgName |
||||
|
version = "${project.version}" |
||||
|
release = 1 |
||||
|
os = LINUX |
||||
|
type = BINARY |
||||
|
|
||||
|
into pkgInstallFolder |
||||
|
|
||||
|
user pkgName |
||||
|
permissionGroup pkgName |
||||
|
|
||||
|
// Copy the actual .jar file |
||||
|
from(mainJar) { |
||||
|
// Strip the version from the jar filename |
||||
|
rename { String fileName -> |
||||
|
"${pkgName}.jar" |
||||
|
} |
||||
|
fileMode 0500 |
||||
|
into "bin" |
||||
|
} |
||||
|
|
||||
|
// Copy the config files |
||||
|
from("target/conf") { |
||||
|
exclude "${pkgName}.conf" |
||||
|
fileType CONFIG | NOREPLACE |
||||
|
fileMode 0754 |
||||
|
into "conf" |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
// Configure our RPM build task |
||||
|
buildRpm { |
||||
|
|
||||
|
arch = NOARCH |
||||
|
|
||||
|
version = projectVersion.replace('-', '') |
||||
|
archiveName = "${pkgName}.rpm" |
||||
|
|
||||
|
requires("java-1.8.0") |
||||
|
|
||||
|
from("target/conf") { |
||||
|
include "${pkgName}.conf" |
||||
|
filter(ReplaceTokens, tokens: ['pkg.platform': 'rpm']) |
||||
|
fileType CONFIG | NOREPLACE |
||||
|
fileMode 0754 |
||||
|
into "${pkgInstallFolder}/conf" |
||||
|
} |
||||
|
|
||||
|
preInstall file("${buildDir}/control/rpm/preinst") |
||||
|
postInstall file("${buildDir}/control/rpm/postinst") |
||||
|
preUninstall file("${buildDir}/control/rpm/prerm") |
||||
|
postUninstall file("${buildDir}/control/rpm/postrm") |
||||
|
|
||||
|
user pkgName |
||||
|
permissionGroup pkgName |
||||
|
|
||||
|
// Copy the system unit files |
||||
|
from("${buildDir}/control/${pkgName}.service") { |
||||
|
addParentDirs = false |
||||
|
fileMode 0644 |
||||
|
into "/usr/lib/systemd/system" |
||||
|
} |
||||
|
|
||||
|
directory(pkgLogFolder, 0755) |
||||
|
link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml") |
||||
|
link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf") |
||||
|
} |
||||
|
|
||||
|
// Same as the buildRpm task |
||||
|
buildDeb { |
||||
|
|
||||
|
arch = "all" |
||||
|
|
||||
|
archiveName = "${pkgName}.deb" |
||||
|
|
||||
|
requires("openjdk-8-jre").or("java8-runtime").or("oracle-java8-installer").or("openjdk-8-jre-headless") |
||||
|
|
||||
|
from("target/conf") { |
||||
|
include "${pkgName}.conf" |
||||
|
filter(ReplaceTokens, tokens: ['pkg.platform': 'deb']) |
||||
|
fileType CONFIG | NOREPLACE |
||||
|
fileMode 0754 |
||||
|
into "${pkgInstallFolder}/conf" |
||||
|
} |
||||
|
|
||||
|
configurationFile("${pkgInstallFolder}/conf/${pkgName}.conf") |
||||
|
configurationFile("${pkgInstallFolder}/conf/${pkgName}.yml") |
||||
|
configurationFile("${pkgInstallFolder}/conf/logback.xml") |
||||
|
|
||||
|
preInstall file("${buildDir}/control/deb/preinst") |
||||
|
postInstall file("${buildDir}/control/deb/postinst") |
||||
|
preUninstall file("${buildDir}/control/deb/prerm") |
||||
|
postUninstall file("${buildDir}/control/deb/postrm") |
||||
|
|
||||
|
user pkgName |
||||
|
permissionGroup pkgName |
||||
|
|
||||
|
directory(pkgLogFolder, 0755) |
||||
|
link("/etc/init.d/${pkgName}", "${pkgInstallFolder}/bin/${pkgName}.jar") |
||||
|
link("${pkgInstallFolder}/bin/${pkgName}.yml", "${pkgInstallFolder}/conf/${pkgName}.yml") |
||||
|
link("/etc/${pkgName}/conf", "${pkgInstallFolder}/conf") |
||||
|
} |
||||
@ -0,0 +1,337 @@ |
|||||
|
<!-- |
||||
|
|
||||
|
Copyright © 2016-2018 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. |
||||
|
|
||||
|
--> |
||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||
|
<modelVersion>4.0.0</modelVersion> |
||||
|
<parent> |
||||
|
<groupId>org.thingsboard</groupId> |
||||
|
<version>2.2.0-SNAPSHOT</version> |
||||
|
<artifactId>transport</artifactId> |
||||
|
</parent> |
||||
|
<groupId>org.thingsboard.transport</groupId> |
||||
|
<artifactId>mqtt</artifactId> |
||||
|
<packaging>jar</packaging> |
||||
|
|
||||
|
<name>Thingsboard MQTT Transport Service</name> |
||||
|
<url>https://thingsboard.io</url> |
||||
|
|
||||
|
<properties> |
||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
||||
|
<main.dir>${basedir}/../..</main.dir> |
||||
|
<pkg.name>tb-mqtt-transport</pkg.name> |
||||
|
<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> |
||||
|
<dependency> |
||||
|
<groupId>org.thingsboard.common.transport</groupId> |
||||
|
<artifactId>mqtt</artifactId> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.thingsboard.common</groupId> |
||||
|
<artifactId>queue</artifactId> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>com.sun.winsw</groupId> |
||||
|
<artifactId>winsw</artifactId> |
||||
|
<classifier>bin</classifier> |
||||
|
<type>exe</type> |
||||
|
<scope>provided</scope> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-test</artifactId> |
||||
|
<scope>test</scope> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>junit</groupId> |
||||
|
<artifactId>junit</artifactId> |
||||
|
<scope>test</scope> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.mockito</groupId> |
||||
|
<artifactId>mockito-all</artifactId> |
||||
|
<scope>test</scope> |
||||
|
</dependency> |
||||
|
</dependencies> |
||||
|
|
||||
|
<build> |
||||
|
<finalName>${pkg.name}-${project.version}</finalName> |
||||
|
<resources> |
||||
|
<resource> |
||||
|
<directory>${project.basedir}/src/main/resources</directory> |
||||
|
</resource> |
||||
|
</resources> |
||||
|
<plugins> |
||||
|
<plugin> |
||||
|
<groupId>org.apache.maven.plugins</groupId> |
||||
|
<artifactId>maven-resources-plugin</artifactId> |
||||
|
<executions> |
||||
|
<execution> |
||||
|
<id>copy-conf</id> |
||||
|
<phase>process-resources</phase> |
||||
|
<goals> |
||||
|
<goal>copy-resources</goal> |
||||
|
</goals> |
||||
|
<configuration> |
||||
|
<outputDirectory>${project.build.directory}/conf</outputDirectory> |
||||
|
<resources> |
||||
|
<resource> |
||||
|
<directory>src/main/resources</directory> |
||||
|
<excludes> |
||||
|
<exclude>logback.xml</exclude> |
||||
|
</excludes> |
||||
|
<filtering>false</filtering> |
||||
|
</resource> |
||||
|
</resources> |
||||
|
</configuration> |
||||
|
</execution> |
||||
|
<execution> |
||||
|
<id>copy-service-conf</id> |
||||
|
<phase>process-resources</phase> |
||||
|
<goals> |
||||
|
<goal>copy-resources</goal> |
||||
|
</goals> |
||||
|
<configuration> |
||||
|
<outputDirectory>${project.build.directory}/conf</outputDirectory> |
||||
|
<resources> |
||||
|
<resource> |
||||
|
<directory>src/main/conf</directory> |
||||
|
<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>tb-mqtt-transport.conf</exclude> |
||||
|
</excludes> |
||||
|
<filtering>true</filtering> |
||||
|
</resource> |
||||
|
</resources> |
||||
|
<filters> |
||||
|
<filter>src/main/filters/windows.properties</filter> |
||||
|
</filters> |
||||
|
</configuration> |
||||
|
</execution> |
||||
|
<execution> |
||||
|
<id>copy-control</id> |
||||
|
<phase>process-resources</phase> |
||||
|
<goals> |
||||
|
<goal>copy-resources</goal> |
||||
|
</goals> |
||||
|
<configuration> |
||||
|
<outputDirectory>${project.build.directory}/control</outputDirectory> |
||||
|
<resources> |
||||
|
<resource> |
||||
|
<directory>src/main/scripts/control</directory> |
||||
|
<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> |
||||
|
</executions> |
||||
|
</plugin> |
||||
|
<plugin> |
||||
|
<groupId>org.apache.maven.plugins</groupId> |
||||
|
<artifactId>maven-dependency-plugin</artifactId> |
||||
|
<executions> |
||||
|
<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> |
||||
|
<groupId>org.apache.maven.plugins</groupId> |
||||
|
<artifactId>maven-jar-plugin</artifactId> |
||||
|
<configuration> |
||||
|
<excludes> |
||||
|
<exclude>**/logback.xml</exclude> |
||||
|
</excludes> |
||||
|
<archive> |
||||
|
<manifestEntries> |
||||
|
<Implementation-Title>ThingsBoard MQTT Transport Service</Implementation-Title> |
||||
|
<Implementation-Version>${project.version}</Implementation-Version> |
||||
|
</manifestEntries> |
||||
|
</archive> |
||||
|
</configuration> |
||||
|
</plugin> |
||||
|
<plugin> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-maven-plugin</artifactId> |
||||
|
<configuration> |
||||
|
<mainClass>org.thingsboard.server.mqtt.ThingsboardMqttTransportApplication</mainClass> |
||||
|
<classifier>boot</classifier> |
||||
|
<layout>ZIP</layout> |
||||
|
<executable>true</executable> |
||||
|
<excludeDevtools>true</excludeDevtools> |
||||
|
<embeddedLaunchScriptProperties> |
||||
|
<confFolder>${pkg.installFolder}/conf</confFolder> |
||||
|
<logFolder>${pkg.unixLogFolder}</logFolder> |
||||
|
<logFilename>${pkg.name}.out</logFilename> |
||||
|
<initInfoProvides>${pkg.name}</initInfoProvides> |
||||
|
</embeddedLaunchScriptProperties> |
||||
|
</configuration> |
||||
|
<executions> |
||||
|
<execution> |
||||
|
<goals> |
||||
|
<goal>repackage</goal> |
||||
|
</goals> |
||||
|
</execution> |
||||
|
</executions> |
||||
|
</plugin> |
||||
|
<plugin> |
||||
|
<groupId>org.fortasoft</groupId> |
||||
|
<artifactId>gradle-maven-plugin</artifactId> |
||||
|
<configuration> |
||||
|
<tasks> |
||||
|
<task>build</task> |
||||
|
<task>buildDeb</task> |
||||
|
<task>buildRpm</task> |
||||
|
</tasks> |
||||
|
<args> |
||||
|
<arg>-PprojectBuildDir=${project.build.directory}</arg> |
||||
|
<arg>-PprojectVersion=${project.version}</arg> |
||||
|
<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.unixLogFolder}</arg> |
||||
|
</args> |
||||
|
</configuration> |
||||
|
<executions> |
||||
|
<execution> |
||||
|
<phase>package</phase> |
||||
|
<goals> |
||||
|
<goal>invoke</goal> |
||||
|
</goals> |
||||
|
</execution> |
||||
|
</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.apache.maven.plugins</groupId> |
||||
|
<artifactId>maven-install-plugin</artifactId> |
||||
|
<configuration> |
||||
|
<file>${project.build.directory}/${pkg.name}.deb</file> |
||||
|
<artifactId>${project.artifactId}</artifactId> |
||||
|
<groupId>${project.groupId}</groupId> |
||||
|
<version>${project.version}</version> |
||||
|
<classifier>deb</classifier> |
||||
|
<packaging>deb</packaging> |
||||
|
</configuration> |
||||
|
<executions> |
||||
|
<execution> |
||||
|
<id>install-deb</id> |
||||
|
<phase>package</phase> |
||||
|
<goals> |
||||
|
<goal>install-file</goal> |
||||
|
</goals> |
||||
|
</execution> |
||||
|
</executions> |
||||
|
</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> |
||||
@ -0,0 +1,71 @@ |
|||||
|
<!-- |
||||
|
|
||||
|
Copyright © 2016-2018 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> |
||||
|
</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> |
||||
@ -0,0 +1,43 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<!-- |
||||
|
|
||||
|
Copyright © 2016-2018 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. |
||||
|
|
||||
|
--> |
||||
|
<!DOCTYPE configuration> |
||||
|
<configuration> |
||||
|
|
||||
|
<appender name="fileLogAppender" |
||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
|
<file>${pkg.logFolder}/${pkg.name}.log</file> |
||||
|
<rollingPolicy |
||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
||||
|
<fileNamePattern>${pkg.logFolder}/${pkg.name}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
||||
|
<maxFileSize>100MB</maxFileSize> |
||||
|
<maxHistory>30</maxHistory> |
||||
|
<totalSizeCap>3GB</totalSizeCap> |
||||
|
</rollingPolicy> |
||||
|
<encoder> |
||||
|
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> |
||||
|
</encoder> |
||||
|
</appender> |
||||
|
|
||||
|
<logger name="org.thingsboard.server" level="INFO" /> |
||||
|
|
||||
|
<root level="INFO"> |
||||
|
<appender-ref ref="fileLogAppender"/> |
||||
|
</root> |
||||
|
|
||||
|
</configuration> |
||||
@ -0,0 +1,23 @@ |
|||||
|
# |
||||
|
# Copyright © 2016-2018 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. |
||||
|
# |
||||
|
|
||||
|
export JAVA_OPTS="$JAVA_OPTS -Xloggc:@pkg.logFolder@/gc.log -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps" |
||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10" |
||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:GCLogFileSize=10M -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark" |
||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:CMSWaitDuration=10000 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelInitialMarkEnabled" |
||||
|
export JAVA_OPTS="$JAVA_OPTS -XX:+CMSEdenChunksRecordAlways -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly" |
||||
|
export LOG_FILENAME=${pkg.name}.out |
||||
|
export LOADER_PATH=${pkg.installFolder}/conf |
||||
@ -0,0 +1 @@ |
|||||
|
pkg.logFolder=${pkg.unixLogFolder} |
||||
@ -0,0 +1,2 @@ |
|||||
|
pkg.logFolder=${BASE}\\logs |
||||
|
pkg.winWrapperLogFolder=%BASE%\\logs |
||||
@ -0,0 +1,6 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
chown -R ${pkg.name}: ${pkg.logFolder} |
||||
|
chown -R ${pkg.name}: ${pkg.installFolder} |
||||
|
update-rc.d ${pkg.name} defaults |
||||
|
|
||||
@ -0,0 +1,3 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
update-rc.d -f ${pkg.name} remove |
||||
@ -0,0 +1,18 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
if ! getent group ${pkg.name} >/dev/null; then |
||||
|
addgroup --system ${pkg.name} |
||||
|
fi |
||||
|
|
||||
|
if ! getent passwd ${pkg.name} >/dev/null; then |
||||
|
adduser --quiet \ |
||||
|
--system \ |
||||
|
--ingroup ${pkg.name} \ |
||||
|
--quiet \ |
||||
|
--disabled-login \ |
||||
|
--disabled-password \ |
||||
|
--home ${pkg.installFolder} \ |
||||
|
--no-create-home \ |
||||
|
-gecos "Thingsboard application" \ |
||||
|
${pkg.name} |
||||
|
fi |
||||
@ -0,0 +1,5 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
if [ -e /var/run/${pkg.name}/${pkg.name}.pid ]; then |
||||
|
service ${pkg.name} stop |
||||
|
fi |
||||
@ -0,0 +1,9 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
chown -R ${pkg.name}: ${pkg.logFolder} |
||||
|
chown -R ${pkg.name}: ${pkg.installFolder} |
||||
|
|
||||
|
if [ $1 -eq 1 ] ; then |
||||
|
# Initial installation |
||||
|
systemctl --no-reload enable ${pkg.name}.service >/dev/null 2>&1 || : |
||||
|
fi |
||||
@ -0,0 +1,6 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
if [ $1 -ge 1 ] ; then |
||||
|
# Package upgrade, not uninstall |
||||
|
systemctl try-restart ${pkg.name}.service >/dev/null 2>&1 || : |
||||
|
fi |
||||
@ -0,0 +1,6 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
getent group ${pkg.name} >/dev/null || groupadd -r ${pkg.name} |
||||
|
getent passwd ${pkg.name} >/dev/null || \ |
||||
|
useradd -d ${pkg.installFolder} -g ${pkg.name} -M -r ${pkg.name} -s /sbin/nologin \ |
||||
|
-c "Thingsboard application" |
||||
@ -0,0 +1,6 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
if [ $1 -eq 0 ] ; then |
||||
|
# Package removal, not upgrade |
||||
|
systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || : |
||||
|
fi |
||||
@ -0,0 +1,11 @@ |
|||||
|
[Unit] |
||||
|
Description=${pkg.name} |
||||
|
After=syslog.target |
||||
|
|
||||
|
[Service] |
||||
|
User=${pkg.name} |
||||
|
ExecStart=${pkg.installFolder}/bin/${pkg.name}.jar |
||||
|
SuccessExitStatus=143 |
||||
|
|
||||
|
[Install] |
||||
|
WantedBy=multi-user.target |
||||
@ -0,0 +1,87 @@ |
|||||
|
@ECHO OFF |
||||
|
|
||||
|
setlocal ENABLEEXTENSIONS |
||||
|
|
||||
|
@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 |
||||
|
|
||||
|
: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} ... |
||||
|
|
||||
|
%BASE%${pkg.name}.exe install |
||||
|
|
||||
|
@ECHO ${pkg.name} installed successfully! |
||||
|
|
||||
|
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 |
||||
|
|
||||
|
|
||||
@ -0,0 +1,36 @@ |
|||||
|
<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" /> |
||||
|
<executable>java</executable> |
||||
|
<startargument>-Xloggc:%BASE%\logs\gc.log</startargument> |
||||
|
<startargument>-XX:+HeapDumpOnOutOfMemoryError</startargument> |
||||
|
<startargument>-XX:+PrintGCDetails</startargument> |
||||
|
<startargument>-XX:+PrintGCDateStamps</startargument> |
||||
|
<startargument>-XX:+PrintHeapAtGC</startargument> |
||||
|
<startargument>-XX:+PrintTenuringDistribution</startargument> |
||||
|
<startargument>-XX:+PrintGCApplicationStoppedTime</startargument> |
||||
|
<startargument>-XX:+UseGCLogFileRotation</startargument> |
||||
|
<startargument>-XX:NumberOfGCLogFiles=10</startargument> |
||||
|
<startargument>-XX:GCLogFileSize=10M</startargument> |
||||
|
<startargument>-XX:-UseBiasedLocking</startargument> |
||||
|
<startargument>-XX:+UseTLAB</startargument> |
||||
|
<startargument>-XX:+ResizeTLAB</startargument> |
||||
|
<startargument>-XX:+PerfDisableSharedMem</startargument> |
||||
|
<startargument>-XX:+UseCondCardMark</startargument> |
||||
|
<startargument>-XX:CMSWaitDuration=10000</startargument> |
||||
|
<startargument>-XX:+UseParNewGC</startargument> |
||||
|
<startargument>-XX:+UseConcMarkSweepGC</startargument> |
||||
|
<startargument>-XX:+CMSParallelRemarkEnabled</startargument> |
||||
|
<startargument>-XX:+CMSParallelInitialMarkEnabled</startargument> |
||||
|
<startargument>-XX:+CMSEdenChunksRecordAlways</startargument> |
||||
|
<startargument>-XX:CMSInitiatingOccupancyFraction=75</startargument> |
||||
|
<startargument>-XX:+UseCMSInitiatingOccupancyOnly</startargument> |
||||
|
<startargument>-jar</startargument> |
||||
|
<startargument>%BASE%\lib\${pkg.name}.jar</startargument> |
||||
|
|
||||
|
</service> |
||||
@ -0,0 +1,9 @@ |
|||||
|
@ECHO OFF |
||||
|
|
||||
|
@ECHO Stopping ${pkg.name} ... |
||||
|
net stop ${pkg.name} |
||||
|
|
||||
|
@ECHO Uninstalling ${pkg.name} ... |
||||
|
%~dp0${pkg.name}.exe uninstall |
||||
|
|
||||
|
@ECHO DONE. |
||||
Loading…
Reference in new issue