# release-project-plugin **Repository Path**: exppoc/release-project-plugin ## Basic Information - **Project Name**: release-project-plugin - **Description**: (非 Spring)Maven 项目一键发布插件 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-02-16 - **Last Updated**: 2023-02-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # release-project-plugin > (非 Spring)Maven 项目一键发布插件 ------ ## 运行环境 ![](https://img.shields.io/badge/Maven-3.2.5%2B-brightgreen.svg) ![](https://img.shields.io/badge/JDK-1.8%2B-brightgreen.svg) ## 软件介绍 - 一键快速发布一个可运行于生成环境的应用程序 - 支持混淆打包以避免被反编译 - 自动集成依赖构件、配置文件、部署文档、数据库脚本、版本说明、运行脚本等 > **注**:
  本插件的主要作用其实就是**生成运行脚本**与**组织应用程序的目录结构**
  混淆打包是依赖第三方 `proguard-maven-plugin` 插件实现的
  应用程序的部署文件复制(如配置文件、部署文档、数据库脚本等)是依赖第三方 `maven-antrun-plugin` 插件实现的
  版本说明是依赖 [`经验构件库 exp-libs-refactor`](https://github.com/lyy289065406/exp-libs-refactor) 实现的 ## 使用说明 在指定项目的 `pom.xml` 中添加本插件配置后,**通过 `Maven install` 指令触发**。 本插件的完整参数配置如下: ```xml com.exp-blog release-project-plugin ${rpp.version} rpp install install SELF ./libs STAND D:\mavenRepository foo.bar.prj.Version foo.bar.prj.Main UTF-8 java 32m 64m true exp-?libs-.* false ``` 其中各个参数说明如下: | 参数 | 必填 | 取值范围/约束 | 作用 | |:----:|:--------:|:--------|:----| | dependMode | 否 | ○ SELF
○ MAVEN | 影响所发布项目的运行脚本中`-cp *.jar`所依赖构件的指向位置:

**SELF(默认)** :
把所有依赖构件都复制到`./lib`目录下,运行脚本直接指向`./lib`。
此方式所发布应用的体积较大,但是可放在任何环境中运行。

**MAVEN** :
对于通过pom依赖的构件,在运行脚本直接指向本地Maven仓库;
对于不是通过pom依赖的构件,则复制到`./lib`目录后再进行指向。
此方式所发布应用的体积较小,但是运行环境中需存在Maven仓库。 | | jarLibDir | 否 | ./libs(默认) | 复制依赖构件到所发布应用下的目录位置
(影响`dependMode`的复制目录,**一般无需修改**) | | cmpPathMode | 否 | ○ LEAST
○ STAND
○ MOST | 运行脚本中指向依赖构件路径的压缩模式。
若运行脚本中`-cp *.jar`的依赖构件都是绝对路径,则会导致命令
过长不易维护,因此本插件会提取相同前缀的路径并创建对应的路
径前缀变量。此配置项的作用仅仅是影响这些变量的多寡而已,无
需过于关注。

**默认为STAND,即标准模式,一般无需修改** | | mavenRepository | 是 | 绝对路径 | 本地Maven仓库位置,必须与本地部署的 `apache-maven` 的配置文
件 `settings.xml` 中的配置项 `` 取值一致。

win环境推荐值为`D:\mavenRepository`
unix环境推荐值为`~/mavenRepository` | | versionClass | 是 | version 类路径 | 运行脚本打印应用版本信息的入口类路径。
版本信息的配置依赖 [`构件经验库 exp-libs`](https://github.com/lyy289065406/exp-libs) 实现,详见[`这里`](https://github.com/lyy289065406/exp-libs/tree/master/exp-libs/src/main/java/exp/libs/warp/ver) | | mainClass | 是 | main 类路径 | 运行脚本启动应用程序的入口类路径 | | mainArgs | 否 |   | 启动应用程序的main类参数表,按需填写即可 | | charset | 否 |   | 项目编码,**默认为UTF-8** | | jdkPath | 否 | java(默认) | JRE路径,亦即 `%JAVA_HOME%/bin/java` 路径。
由于配置了系统环境变量,一般无需修改。
但若生产环境下存在多个JRE版本,则可按需修改。 | | xms | 否 | 32m(默认) | 应用运行时的最小堆内存,按需填写即可 | | xmx | 否 | 64m(默认) | 应用运行时的最大堆内存,按需填写即可 | | jdkArgs | 否 |   | JVM参数表,按需填写即可 | | threadSuffix | 否 |   | 进程后缀名。
所发布的应用默认用项目名作为进程名,若指定了后缀则会自动
附加到进程名末尾,一般用于同一生产环境下部署多套应用时以
作区分。(实际上在使用本插件发布应用后,也可通过直接修改
`.threadname`文件达到同样目的) | | noPrjVer | 否 | true(默认) | 所发布应用的自身jar文件是否去掉版本号。
默认值为true(即去掉版本号),以便升级时无需调整运行脚本 | | noVerJarRegex | 否 |   | 命中**正则表达式**的\*.jar依赖构件去掉版本号。
建议配置版本迭代较快的依赖构件,以便升级时无需调整运行脚本 | | proguard | 否 | false(默认) | 是否启用混淆打包,可有效防止应用被反编译。
需配置`proguard-maven-plugin`插件支持,但是proguard插件配置
项过于复杂,推荐使用[`Maven项目规范骨架 mojo-archetype`](https://github.com/lyy289065406/mojo-archetype)创建项
目,即可自动生成混淆配置。 | ## 其他参考配置
混淆打包插件 proguard-maven-plugin 的配置示例
```xml com.github.wvengen proguard-maven-plugin 2.0.7 package proguard false pg ${java.home}/lib/rt.jar ${project.build.finalName}-pg ```
部署文件复制插件 maven-antrun-plugin 的配置示例
```xml org.apache.maven.plugins maven-antrun-plugin 1.7 ant-build install run 拷贝数据库脚本 拷贝项目配置文件 拷贝文档 ```
## 运行效果 详见[这里](./Demo.md)