Thingsboard Mac M1平台编译指南

1,778 阅读1分钟

1、获取 Thingsboard 源码

使用 git clone thingsboard 源码,并切换到稳定 tag

git clone https://github.com/thingsboard/thingsboard.git
git checkout v3.2.2

2、环境要求

  • java 11
  • Maven

3、编译

3.1、移除 license 检查

将项目根目录 pom.xml 里的 license-maven-plugin 插件移除

删除如下内容:

 <plugin>
   <groupId>com.mycila</groupId>
   <artifactId>license-maven-plugin</artifactId>
   <version>3.0</version>
   <configuration>
     <header>${main.dir}/license-header-template.txt</header>
     <properties>
       <owner>The Thingsboard Authors</owner>
     </properties>
     <excludes>
       <exclude>**/.env</exclude>
       <exclude>**/*.env</exclude>
       <exclude>**/.eslintrc</exclude>
       <exclude>**/.babelrc</exclude>
       <exclude>**/.jshintrc</exclude>
       <exclude>**/.gradle/**</exclude>
       <exclude>**/nightwatch</exclude>
       <exclude>**/README</exclude>
       <exclude>**/LICENSE</exclude>
       <exclude>**/banner.txt</exclude>
       <exclude>node_modules/**</exclude>
       <exclude>**/*.properties</exclude>
       <exclude>src/test/resources/**</exclude>
       <exclude>src/vendor/**</exclude>
       <exclude>src/font/**</exclude>
       <exclude>src/sh/**</exclude>
       <exclude>packaging/*/scripts/control/**</exclude>
       <exclude>packaging/*/scripts/windows/**</exclude>
       <exclude>packaging/*/scripts/init/**</exclude>
       <exclude>**/*.log</exclude>
       <exclude>**/*.current</exclude>
       <exclude>.instance_id</exclude>
       <exclude>src/main/scripts/control/**</exclude>
       <exclude>src/main/scripts/windows/**</exclude>
       <exclude>src/main/resources/public/static/rulenode/**</exclude>
       <exclude>**/*.proto.js</exclude>
       <exclude>docker/haproxy/**</exclude>
       <exclude>docker/tb-node/**</exclude>
       <exclude>ui/**</exclude>
       <exclude>src/.browserslistrc</exclude>
       <exclude>**/yarn.lock</exclude>
       <exclude>**/*.raw</exclude>
       <exclude>**/apache/cassandra/io/**</exclude>
       <exclude>.run/**</exclude>
     </excludes>
     <mapping>
       <proto>JAVADOC_STYLE</proto>
       <cql>DOUBLEDASHES_STYLE</cql>
       <scss>JAVADOC_STYLE</scss>
       <jsx>SLASHSTAR_STYLE</jsx>
       <tsx>SLASHSTAR_STYLE</tsx>
       <conf>SCRIPT_STYLE</conf>
       <gradle>JAVADOC_STYLE</gradle>
     </mapping>
   </configuration>
   <executions>
     <execution>
       <goals>
         <goal>check</goal>
       </goals>
     </execution>
   </executions>
</plugin>

......

<plugins>
  <plugin>
    <groupId>com.mycila</groupId>
    <artifactId>license-maven-plugin</artifactId>
  </plugin>
</plugins>

3.2、修改 frontend-maven-plugin 插件版本

需要修改 frontend-maven-plugin 插件版本到 1.12.0,在项目中全局搜索 frontend-maven-plugin 然后将其版本号改为 1.12.0 ,否则会导致安装 nodeyarn 失败

3.3、M1 版本的 Mac 需要修改 com.google.protobufclassifier

默认是根据当前编译平台获取对应的 classifier , 但是因为暂时没有提供 M1 版本 也就是 os-arm64版本的包,所以需要手动将这个修改为 osx-x86_64

需要修改根目录下 pom.xml 的两处地方:

<configuration>
  <artifactItems>
    <artifactItem>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protoc</artifactId>
      <version>${protobuf.version}</version>
      <classifier>osx-x86_64</classifier>
      <type>exe</type>
      <overWrite>true</overWrite>
      <outputDirectory>${project.build.directory}</outputDirectory>
    </artifactItem>
  </artifactItems>
</configuration>

.......

<configuration>
  <protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:osx-x86_64</protocArtifact>
  <pluginId>grpc-java</pluginId>
  <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.0.0:exe:osx-x86_64</pluginArtifact>
</configuration>

默认是使用 ${os.detected.classifier}获取的,将其改为osx-x86_64

3.4、编译

使用 mvn install 进行编译

mvn install -Dmaven.test.skip=true

编译完成后会在项目的 application/target目录下生成对应平台的包,如下:

archive-tmp                     test-classes
bin                             thingsboard-3.2.2-1.noarch.rpm
classes                         thingsboard-3.2.2-boot.jar
conf                            thingsboard-3.2.2.jar
control                         thingsboard-windows.zip
data                            thingsboard.deb
debian                          thingsboard.rpm
generated-sources               thingsboard_3.2.2-1_all.changes
generated-test-sources          thingsboard_3.2.2-1_all.deb
maven-archiver                  tmp
maven-status                    windows
protoc-3.11.4-osx-x86_64.exe

4、运行

4.1 修改数据连接

Thingsboard 运行需要数据库环境,默认使用的是 postgres, 所以需要提供一个 postgres 数据库服务,然后修改 application/src/main/resources/thingsboard.yml 将其中的 postgres 的连接信息改为自己的数据库服务信息

spring:
  data:
    jpa:
      repositories:
        enabled: "true"
  jpa:
    open-in-view: "false"
    hibernate:
      ddl-auto: "none"
    database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}"
  datasource:
    driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
    # 修改为自己的数据库地址
    url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
    # 数据库用户名
    username: "${SPRING_DATASOURCE_USERNAME:postgres}"
    # 数据库密码
    password: "${SPRING_DATASOURCE_PASSWORD:postgres}"
    hikari:
      maximumPoolSize: "${SPRING_DATASOURCE_MAXIMUM_POOL_SIZE:16}"

修改连接信息后,需要重新执行编译命令才会生效

4.2、初始化数据

需要在数据库中提前创建好 thingsboard的库,也可以是自定义库名,跟上面的数据库连接信息保持一致即可。

然后进入application/target/bin/install目录,执行如下命令:

chmod +x install_dev_db.sh
./install_dev_db.sh

执行完后会在数据库中初始化测试数据,如果是生产环境的话则将 install_dev_db.sh 换成 install.sh

4.3 运行

运行 application/src/main/java/org/thingsboard/server/ThingsboardServerApplication.java 即可启动 Thingsboard 服务

或者直接运行打包出来的 thingsboard-3.2.2-boot.jar : java -jar thingsboard-3.2.2-boot.jar

启动后访问:http://127.0.0.1:8080

测试账号: