From ab74bca953dc7db0534af25805dd62313442e0f1 Mon Sep 17 00:00:00 2001 From: blinkfox Date: Wed, 22 May 2019 01:00:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=831.2.0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=EF=BC=8C=E5=AE=8C=E5=96=84=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 342 +++++++++++++++++++++++++-- pom.xml | 2 +- src/main/resources/docker/README.md | 1 + src/main/resources/linux/README.md | 1 + src/main/resources/windows/README.md | 1 + 5 files changed, 329 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index fad0a74..0e4f412 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ com.blinkfox jpack-maven-plugin - 1.1.0 + 1.2.0 @@ -46,7 +46,7 @@ mvn clean package jpack:build 然后,执行成功之后,你将在 Maven 控制台看到如下输出: ```bash -[INFO] --- jpack-maven-plugin:1.1.0:build (default-cli) @ web-demo --- +[INFO] --- jpack-maven-plugin:1.2.0:build (default-cli) @ web-demo --- [INFO] -------------------------- jpack start packing... ------------------------- __ __ |__|______ _____ ____ | | __ @@ -91,7 +91,7 @@ openjdk 8-jdk-alpine a3562aa0b991 6 days ag com.blinkfox jpack-maven-plugin - 1.1.0 + 1.2.0 @@ -121,8 +121,9 @@ openjdk 8-jdk-alpine a3562aa0b991 6 days ag - `web-demo-1.0.0.exe`: 可执行的二进制文件,可不用管 - `web-demo-1.0.0.exe.config`: 也可不用管 - `web-demo-1.0.0.xml`: 服务执行相关的配置文件,一般情况下不需要修改 -- `docs`: 存放文档的目录 -- `logs`: 存放日志的目录 +- `config`: 存放 `application.yml` 等配置文件的目录(可自定义复制配置文件到此目录,方便部署时按需修改,SpringBoot 启动时会自动读取) +- `docs`: 存放文档的目录(可自定义复制文档到此目录,方便部署时查阅文档) +- `logs`: 存放日志的目录(建议 SpringBoot 的日志存放到 jar 包同级的 logs 目录中) - `web-demo-1.0.0.jar`: 可执行的 jar 文件 - `README.md`: 主入口说明文件 @@ -141,8 +142,9 @@ openjdk 8-jdk-alpine a3562aa0b991 6 days ag - `start.sh`: 启动服务的 shell 脚本 - `stop.sh`: 停止服务的 shell 脚本 - `restart.sh`: 重启服务的 shell 脚本 -- `docs`: 存放文档的目录 -- `logs`: 存放日志的目录 +- `config`: 存放 `application.yml` 等配置文件的目录(可自定义复制配置文件到此目录,方便部署时按需修改,SpringBoot 启动时会自动读取) +- `docs`: 存放文档的目录(可自定义复制文档到此目录,方便部署时查阅文档) +- `logs`: 存放日志的目录(建议 SpringBoot 的日志存放到 jar 包同级的 logs 目录中) - `web-demo-1.0.0.jar`: 可执行的 jar 文件 - `README.md`: 主入口说明文件 @@ -161,7 +163,7 @@ openjdk 8-jdk-alpine a3562aa0b991 6 days ag com.blinkfox jpack-maven-plugin - 1.1.0 + 1.2.0 @@ -185,8 +187,9 @@ openjdk 8-jdk-alpine a3562aa0b991 6 days ag Maven 构建成功之后,就可以在 `jpack` 目录中看到一个 `web-demo-1.0.0-docker.tar.gz` 的压缩包,即为 docker 的离线导入相关的资源包。该包解压之后的文件结构说明: -- `docs`: 存放文档的目录 -- `web-demo-1.0.0.tar`: 可导入 Docker 的离线镜像包 +- `config`: 存放 `application.yml` 等配置文件的目录(可自定义复制配置文件到此目录,生成该目录与 Windows 或 Linux 下的目的不同,主要是为了方便部署时查阅配置信息,了解系统环境和参数配置,辅助运维人员配置 Docker 的环境变量等,让配置有据可查。) +- `docs`: 存放文档的目录(可自定义复制文档到此目录,方便部署时查阅文档) +- `web-demo-1.0.0.tar`: 可导入 Docker 的离线镜像包,主要使用此包来导入到 Docker 中 - `Dockerfile`: 用于构建镜像的源 `Dockerfile` 文件(可以再自定义修改,用于二次构建) - `web-demo-1.0.0.jar`: 用于构建镜像的源 `jar` 包(可以用于二次构建) - `README.md`: 主入口说明文件 @@ -216,9 +219,290 @@ docker run -d -p 7070:7070 -e JVM_OPTS="-Xms1024m -Xmx2048m" -e PROGRAM_ARGS="-- 稍等一会儿,访问 即可访问服务。 -## jpack 配置最全示例及说明 +## jpack 配置详解 -jpack 的所有配置参数都非必填或者有默认值。下面是 jpack Maven 插件的所有配置项即详细说明,供你参考: +## configuration 配置详解 + +jpack 的所有配置参数都非必填或者有默认值。以下是关于 jpack Maven 插件 `configuration` 下的配置信息介绍,供你参考。 + +### platforms + +用于配置打包时可以打包哪些平台的包。默认为 Windows、Linux 和 Dokcer 三个平台,如果打包的环境没有或没开启 Docker,则会自动忽略 Docker 下的构建及后续的打包等操作。这三个平台的值大小写均可。 + +示例如下: + +```xml + + com.blinkfox + jpack-maven-plugin + ... + + + + Windows + Linux + + + + +``` + +### vmOptions + +用于配置 JVM 运行所需的参数选项,作用于各个平台下。默认为空,如果配置了对应的值,生成的部署包命令行中将会追加这些 JVM 选项参数。 + +示例如下: + +```xml + + com.blinkfox + jpack-maven-plugin + ... + + + -Xms1024m -Xmx2048m + + +``` + +### programArgs + +用于配置 SpringBoot 运行所需的参数,作用于各个平台下。默认为空,如果配置了对应的值,生成的部署包命令行中将会追加这些程序运行参数。 + +> **注**:不太建议使用此配置项来使参数生效,这是命令行级别的生效,不便于运维人员修改,容易出错,建议使用 `configFile` 配置文件的方式。 + +示例如下: + +```xml + + com.blinkfox + jpack-maven-plugin + ... + + + --server.port=7070 + + +``` + +### configFile + +用来复制诸如 `application.yml` 等类似的配置文件到部署包的 `config` 目录中。针对所有平台生效。默认为空,如果配置了对应的值,生成的部署包的 `config` 目录中将会有你复制的配置文件。该值只能配置一个,可以是相对于 `pom.xml` 的相对路径或绝对路径的目录或文件,也可以是网络资源。 + +> **注**:强烈建议配置该值用来替代 `programArgs`,以便于在 Windows 或 Linux 下,直接让运维人员来修改配置文件的方式来使配置生效,而不是通过命令行参数的方式来修改配置。 + +示例如下: + +```xml + + com.blinkfox + jpack-maven-plugin + ... + + + src/test/resources/application.yml + + +``` + +### skipError + +遇到错误时是否跳过错误。默认是不填写或者 `default`,程序会自动处理,不需要你额外关注;`true` 的话,会忽略所有异常;`false` 的话,遇到错误就直接报错。 + +> **注**:目前仅 Docker 下有用到此配置。 + +示例如下: + +```xml + + com.blinkfox + jpack-maven-plugin + ... + + + default + + +``` + +### copyResources + +系统发布时,发布包中必然会有很多除了 `xxx.jar` 之外的其他文件,如:数据库脚本、配置文件、文档手册等等,这些也需要集成到发布包中。为了统一管理和维护,所以通过 `copyResources` 配置项,可以复制你项目中几乎所有你想要的目录、文件或者网络资源等到发布包及发布包里的自定义的目录中。 + +`copyResources` 可以包含多个 `copyResource` 子节点配置项,`copyResource` 中有 `from` 和 `to` 两个参数。用于表示从哪里复制到哪里。 + +- `from`: 复制的源。可以是相对于 `pom.xml` 的相对路径或绝对路径的本地资源,也可以是网络资源文件路径。`from`如果是本地路径时可以是目录也可以是文件。 +- `to`: 需要复制到哪里。不填写或者填写`.`、`/` 时表示的是复制到各平台包的根目录中。如果要填写就只能是目录,可以嵌套多级。如:`abc/def`,表示复制到`abc`目录下的 `def` 目录中,目录会自动创建。 + +示例如下: + +```xml + + com.blinkfox + jpack-maven-plugin + ... + + + + + + README.md + . + + + + docs + docs + + + + ../test-dir/hello.pdf + abc/def + + + + http://xxx.com/image.png + / + + + + +``` + +### excludeFiles + +也需生成的可部署包中,某些文件资源对你而已,显得有些多余,你想排除它们。此时你可以使用 `excludeFiles` 来配置需要排除的文件或目录不会打包的部署包中,可以配置多个。 + +示例如下: + +```xml + + com.blinkfox + jpack-maven-plugin + ... + + + + logs + README.md + xxxxx.abc + + + +``` + +### windows + +这是用于专门对 Windows 平台生效的配置项,主要包括前面提到的如下几个子配置项,用法同前面类似,不再赘述: + +- `vmOptions`: 针对 Windows 平台的 JVM 选项参数配置。如果你配置了这个值,那么在 Windows 下将会覆盖通用的 `vmOptions` 的值。 +- `programArgs`: 针对 Windows 平台的程序参数配置。如果你配置了这个值,那么在 Windows 下将会覆盖通用的 `programArgs` 的值。 +- `configFile`: 针对 Windows 平台的配置文件配置。如果你配置了这个值,那么在 Windows 下将会覆盖通用的 `configFile` 的值。 +- `copyResources`: 针对 Windows 平台的资源复制。如果你配置了这个值,那么会额外复制这些资源到 Windows 平台的包中。 +- `excludeFiles`: 针对 Windows 平台的资源排除。如果你配置了这个值,那么会额外从 Windows 平台的包中排除这些资源。 + +示例如下: + +```xml + + com.blinkfox + jpack-maven-plugin + ... + + + + -Xms1024m -Xmx2048m + --server.port=7070 + src/test/resources/application-dev.yml + + + README.pdf + . + + + + logs + + + + +``` + +### linux + +这是用于专门对 Linux 平台生效的配置项,主要包括前面提到的如下几个子配置项,用法同前面类似,不再赘述: + +- `vmOptions`: 针对 Linux 平台的 JVM 选项参数配置。如果你配置了这个值,那么在 Linux 下将会覆盖通用的 `vmOptions` 的值。 +- `programArgs`: 针对 Linux 平台的程序参数配置。如果你配置了这个值,那么在 Linux 下将会覆盖通用的 `programArgs` 的值。 +- `configFile`: 针对 Linux 平台的配置文件配置。如果你配置了这个值,那么在 Linux 下将会覆盖通用的 `configFile` 的值。 +- `copyResources`: 针对 Linux 平台的资源复制。如果你配置了这个值,那么会额外复制这些资源到 Linux 平台的包中。 +- `excludeFiles`: 针对 Linux 平台的资源排除。如果你配置了这个值,那么会额外从 Linux 平台的包中排除这些资源。 + +示例同 Windows 下的类似。 + +### docker + +这是用于专门对 Docker 平台生效的配置项,主要包括前面提到的如下几个子配置项及Docker 平台下特有的一些配置项,用法同前面类似,不再赘述: + +- `dockerfile`: 构建 Docker 镜像的 `Dockerfile` 文件的相对路径,没有此配置项或者不填写,则使用 jpack 默认的 `Dockerfile` 文件. +- `registry`: 远程仓库地址,不填写则默认为 Dockerhub。 +- `repo`: 构建镜像的仓库名,类似于 `groupId`,不填写则默认使用 `groupId`。 +- `name`: 构建镜像的名称,类似于 `artifactId`,不填写则默认使用 `artifactId`。 +- `tag`: 构建镜像的版本标签,不填写则默认使用 `version`。 +- `extraGoals`: 额外的构建目标,默认只是构建镜像,如果你需要配置导出镜像包可以再填写 `save`,推送到 Dockerhub 可以再填写 `push`。 +- `vmOptions`: 针对 Docker 平台的 JVM 选项参数配置。如果你配置了这个值,那么在 Docker 下将会覆盖通用的 `vmOptions` 的值。 +- `programArgs`: 针对 Docker 平台的程序参数配置。如果你配置了这个值,那么在 Docker 下将会覆盖通用的 `programArgs` 的值。 +- `configFile`: 针对 Docker 平台的配置文件配置。如果你配置了这个值,那么在 Docker 下将会覆盖通用的 `configFile` 的值。 +- `copyResources`: 针对 Docker 平台的资源复制。如果你配置了这个值,那么会额外复制这些资源到 Docker 平台的包中。 +- `excludeFiles`: 针对 Docker 平台的资源排除。如果你配置了这个值,那么会额外从 Docker 平台的包中排除这些资源。 + +示例如下: + +```xml + + com.blinkfox + jpack-maven-plugin + ... + + + + + Dockerfile + + + blinkfox + jpack-test + 1.0.0-SNAPSHOT + + + save + + -Xms1024m -Xmx2048m + --server.port=7070 + src/test/resources/application-dev.yml + + + README.pdf + . + + + + logs + + + + +``` + +## 更全的配置示例及说明 + +jpack 的所有配置参数都非必填或者有默认值。下面是 jpack Maven 插件的所有配置项配置示例如下: ```xml @@ -236,17 +520,25 @@ jpack 的所有配置参数都非必填或者有默认值。下面是 jpack Mave - - -Xms1024m -Xmx2048m - - --server.port=7070 Windows Linux Docker + + -Xms1024m -Xmx2048m + + --server.port=7070 + default + + ... + + + ... + Dockerfile @@ -261,6 +553,7 @@ jpack 的所有配置参数都非必填或者有默认值。下面是 jpack Mave save + ... @@ -298,4 +591,19 @@ jpack 的所有配置参数都非必填或者有默认值。下面是 jpack Mave ## 许可证 -本 [jpack-maven-plugin](https://github.com/blinkfox/jpack-maven-plugin) Maven 插件 遵守 [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0) 许可证。 \ No newline at end of file +本 [jpack-maven-plugin](https://github.com/blinkfox/jpack-maven-plugin) Maven 插件 遵守 [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0) 许可证。 + +## 版本记录 + +- v1.2.0(2019-05-22) + - 修复了 Windows 下的 SpringBoot 配置文件不生效的问题; + - 新增了 `configFile` 的配置支持; + - 新增了自定义 Windows、Linux、Docker 下的一些通用配置为平台专属配置; + - 修复了默认 `Dockerfile` 构建的镜像容器时间不对的问题; +- v1.1.0(2019-05-18) + - 新增了 Docker 平台下的构建、部署包导出、推送镜像等; + - 新增了一些配置参数; + - 完善文档说明; +- v1.0.0(2019-05-07) + - 基础功能完成; + - 支持打包为 Windows 和 Linux 下的部署包; \ No newline at end of file diff --git a/pom.xml b/pom.xml index d7ca1e9..019563d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.blinkfox jpack-maven-plugin - 1.2.0-SNAPSHOT + 1.2.0 maven-plugin jpack-maven-plugin diff --git a/src/main/resources/docker/README.md b/src/main/resources/docker/README.md index 5610d11..5eab1ef 100644 --- a/src/main/resources/docker/README.md +++ b/src/main/resources/docker/README.md @@ -6,6 +6,7 @@ 本压缩包的文件结构说明: +- `config`: 存放 `application.yml` 等配置文件的目录 - `docs`: 存放文档的目录 - `xxx-yyy.tar`: 可导入 Docker 的离线镜像包 - `Dockerfile`: 用于构建镜像的源 `Dockerfile` 文件(可以再自定义修改,用于二次构建) diff --git a/src/main/resources/linux/README.md b/src/main/resources/linux/README.md index 19450ee..828fdd1 100644 --- a/src/main/resources/linux/README.md +++ b/src/main/resources/linux/README.md @@ -10,6 +10,7 @@ - `start.sh`: 启动服务的 shell 脚本 - `stop.sh`: 停止服务的 shell 脚本 - `restart.sh`: 重启服务的 shell 脚本 +- `config`: 存放 `application.yml` 等配置文件的目录 - `docs`: 存放文档的目录 - `logs`: 存放日志的目录 - `xxx-yyy.jar`: 可执行的 jar 文件 diff --git a/src/main/resources/windows/README.md b/src/main/resources/windows/README.md index 0eb06b1..85e637d 100644 --- a/src/main/resources/windows/README.md +++ b/src/main/resources/windows/README.md @@ -15,6 +15,7 @@ - `web-demo-1.0.0.exe`: 可执行的二进制文件,可不用管 - `web-demo-1.0.0.exe.config`: 也可不用管 - `web-demo-1.0.0.xml`: 服务执行相关的配置文件,一般情况下不需要修改 +- `config`: 存放 `application.yml` 等配置文件的目录 - `docs`: 存放文档的目录 - `logs`: 存放日志的目录 - `xxx-yyy.jar`: 可执行的 jar 文件