目标

本文带你配置 IIDP 的开发环境,并运行后端服务。

开始前准备

  1. git
  2. Java 8
  3. IDEA
  4. maven
  5. MySQL 8.0+

拉取项目

使用 git 拉取 snest-demo 到本地,并使用 IDEA 打开。

配置 maven

打开 IDEA 配置 - Build,Execution,Deployment - Build Tools - Maven。使用自己的 maven 配置覆盖 IDEA 自带 maven 的配置。

修改 maven.settings.xml 添加仓库配置。

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>${user.home}/.m2/repository</localRepository>

  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>central</mirrorOf>
      <url>http://192.168.168.156:8081/repository/maven-public/</url>
    </mirror>
    <mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>central</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  
  <profiles>
    <profile>
      <id>nexus</id>
      <repositories>
        <repository>
          <id>nexus</id>
          <name>Nexus</name>
          <url>http://192.168.168.156:8081/repository/maven-public/</url>
          <releases>
            <enabled>true</enabled>
            <!--<always>true</always>-->
            <updatePolicy>always</updatePolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <!--<always>true</always>-->
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>nexus</id>
          <name>Nexus</name>
          <url>http://192.168.168.156:8081/repository/maven-snapshots/</url>
          <releases>
            <enabled>true</enabled>
            <!--<always>true</always>-->
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <!--<always>true</always>-->
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>

    <profile>
      <id>nexus-aliyun</id>
      <repositories>
        <repository>
          <id>nexus-aliyun</id>
          <name>nexus-aliyun</name>
          <url>https://maven.aliyun.com/repository/public</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>nexus-aliyun</id>
          <name>nexus-aliyun</name>
          <url>https://maven.aliyun.com/repository/public/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>nexus-aliyun</activeProfile>
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
</settings>

创建数据库

创建一个新的数据库,字符集选择 utf8mb4,排序字符集选择 utf8mb4-bin。

修改 snest-demo-server/src/main/resources/dbcp.properties 里面的数据库连接。

启动项目

先运行 maven 的 clean package。

跟 SpringBoot 项目类似,启动 snest-demo-server/src/main/java/com/sie/demo/server/Server.java

打开浏览器访问 http://localhost:8060/root/api/master 可以看到以下页面。

Image not found

项目结构

Image not found

  • apps 目录
    • apps.json 内置应用列表
    • sie-snest-base-1.0-SNAPSHOT.jar
    • sie-snest-file-1.0-SNAPSHOT.jar
    • sie-snest-dict-1.0-SNAPSHOT.jar
  • snest-apps 模块
    • 需要开发的 APP
  • snest-server 引擎服务
    • application.properties 引擎配置信息
    • dbcp.properties 数据库配置信息

启动逻辑如下

  1. 引擎启动的时候,会读取 apps/apps.json 文件。
  2. 然后根据 apps.json 的内容,先加载 apps 目录下的内置应用。
  3. 根据数据库的数据,加载其他方式安装的 app。
  4. 启动 Spring 容器,暴露服务

常见问题

application.properties 指定了不存在的 apps 目录

在 application.properties 或 application-dev.properties 文件里,有一个配置项 app.install.jar.dir。如果指定了一个不存在的路径,会导致无法加载内置应用。