![Logo](https://user-images.githubusercontent.com/71620349/185368586-aed82d30-1534-453d-86ff-ecfa9d0f35bd.png)

# `Know Streaming` 源码编译打包手册

## 1、环境信息

**系统支持**

`windows7+`、`Linux`、`Mac`

**环境依赖**

- Maven 3.6.3 （后端）
- Node v12.20.0/v14.17.3 （前端）
- Java 8+ （后端）
- Git

## 2、编译打包

整个工程中，除了`km-console`为前端模块之外，其他模块都是后端工程相关模块。

因此，如果前后端合并打包，则打对整个工程进行打包；如果前端单独打包，则仅打包 `km-console` 中的代码；如果是仅需要后端打包，则在顶层 `pom.xml` 中去掉 `km-console`模块，然后进行打包。

具体见下面描述。

### 2.1、前后端合并打包

1. 下载源码；
2. 进入 `KS-KM` 工程目录，执行 `mvn -Prelease-package -Dmaven.test.skip=true clean install -U` 命令；
3. 打包命令执行完成后，会在 `km-dist/target` 目录下面生成一个 `KnowStreaming-*.tar.gz` 的安装包。

### 2.2、前端单独打包

1. 下载源码；
2. 跳转到 [前端打包构建文档](https://github.com/didi/KnowStreaming/blob/master/km-console/README.md) 按步骤进行。打包成功后，会在 `km-rest/src/main/resources` 目录下生成名为 `templates` 的前端静态资源包;
3. 如果上一步过程中报错，请查看 [FAQ](https://github.com/didi/KnowStreaming/blob/master/docs/user_guide/faq.md) 第 8.10 条;

### 2.3、后端单独打包

1. 下载源码；
2. 修改顶层 `pom.xml` ，去掉其中的 `km-console` 模块，如下所示；

```xml
    <modules>
<!--        <module>km-console</module>-->
        <module>km-common</module>
        <module>km-persistence</module>
        <module>km-core</module>
        <module>km-biz</module>
        <module>km-extends/km-account</module>
        <module>km-extends/km-monitor</module>
        <module>km-extends/km-license</module>
        <module>km-extends/km-rebalance</module>
        <module>km-task</module>
        <module>km-collector</module>
        <module>km-rest</module>
        <module>km-dist</module>
    </modules>
```

3. 执行 `mvn -U clean package -Dmaven.test.skip=true`命令；
4. 执行完成之后会在 `KS-KM/km-rest/target` 目录下面生成一个 `ks-km.jar` 即为 KS 的后端部署的 Jar 包，也可以执行 `mvn -Prelease-package -Dmaven.test.skip=true clean install -U` 生成的 tar 包也仅有后端服务的功能；
