# xjar-maven-plugin **Repository Path**: alcloud/xjar-maven-plugin ## Basic Information - **Project Name**: xjar-maven-plugin - **Description**: XJar-Maven-Plugin 是对 XJar 的一个Maven Plugin封装,实现可通过Maven命令或绑定在Maven构建的生命周期之中执行,用以更加便捷的方式集成 XJar 。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 39 - **Created**: 2019-08-05 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # XJar-Maven-Plugin [![](https://jitpack.io/v/core-lib/xjar-maven-plugin.svg)](https://jitpack.io/#core-lib/xjar-maven-plugin) #### XJar-Maven-Plugin 是对 [XJar](https://github.com/core-lib/xjar) 的一个Maven Plugin封装,实现可通过Maven命令或绑定在Maven构建的生命周期之中执行,用以更加便捷的方式集成 [XJar](https://github.com/core-lib/xjar) 。 GitHub: https://github.com/core-lib/xjar-maven-plugin ## 什么是XJar XJar 是基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动,动态解密运行的方案,避免源码泄露或反编译,支持Spring Boot JAR 安全加密运行,同时支持的原生JAR。 更多文档请点击:[XJar](https://github.com/core-lib/xjar) ## 环境依赖 JDK 1.7 + ## 集成步骤 ```xml jitpack.io https://jitpack.io com.github.core-lib xjar-maven-plugin v2.0.5 build package io.xjar ``` #### 也可以通过Maven命令单独执行 XJar 插件 ```text mvn xjar:build -Dxjar.password=io.xjar mvn xjar:build -Dxjar.password=io.xjar -Dxjar.targetDir=/directory/to/save/target.xjar ``` #### 但通常情况下是让XJar插件绑定到指定的phase中自动执行,这样就能在项目构建的时候自动构建出加密的包。 ```text mvn clean package -Dxjar.password=io.xjar mvn clean install -Dxjar.password=io.xjar -Dxjar.targetDir=/directory/to/save/target.xjar ``` ## 强烈建议 强烈建议不要在 pom.xml 的 xjar-maven-plugin 配置中写上密码,这样会导致打包出来的 xjar 包中的 pom.xml 文件保留着密码,极其容易暴露密码!强烈推荐通过 mvn 命令来指定加密密钥! ## 注意事项 ```xml org.springframework.boot spring-boot-maven-plugin ``` ## 参数说明 | 参数名称 | 命令参数名称 | 参数说明 | 参数类型 | 缺省值 | 示例值 | | :------ | :----------- | :------ | :------ | :----- | :----- | | password | -Dxjar.password | 密码字符串 | String | 必须 | 任意字符串,io.xjar | | algorithm | -Dxjar.algorithm | 加密算法名称 | String | AES | JDK内置加密算法,如:AES / DES | | keySize | -Dxjar.keySize | 密钥长度 | int | 128 | 根据加密算法而定,56,128,256 | | ivSize | -Dxjar.ivSize | 密钥向量长度 | int | 128 | 根据加密算法而定,128 | | mode | -Dxjar.mode | 加密模式 | int | 0 | 0:普通模式 1:危险模式(免密码启动)| | sourceDir | -Dxjar.sourceDir | 源jar所在目录 | File | ${project.build.directory} | 文件目录 | | sourceJar | -Dxjar.sourceJar | 源jar名称 | String | ${project.build.finalName}.jar | 文件名称 | | targetDir | -Dxjar.targetDir | 目标jar存放目录 | File | ${project.build.directory} | 文件目录 | | targetJar | -Dxjar.targetJar | 目标jar名称 | String | ${project.build.finalName}.xjar | 文件名称 | | includes | -Dxjar.includes | 需要加密的资源路径表达式 | String[] | 无 | com/company/project/** , mapper/*Mapper.xml , 支持Ant表达式 | | excludes | -Dxjar.excludes | 无需加密的资源路径表达式 | String[] | 无 | static/** , META-INF/resources/** , 支持Ant表达式 | #### 注意: * 当 includes 和 excludes 同时使用时即加密在includes的范围内且排除了excludes的资源。 * mode 设置为 1 时表示危险加密模式,但同时也是免密码启动,请谨慎使用! ## 版本记录 * v2.0.5 * 升级[LoadKit](https://github.com/core-lib/loadkit)依赖版本 * 修复ANT表达式无法正确匹配**/*通配符的问题 * v2.0.4 * 解决危险模式不支持ubuntu系统的问题 * v2.0.3 * 过滤器泛型协变支持 * 支持 includes 与 excludes 同时起效,当同时设置时即加密在includes范围内但又不在excludes范围内的资源 * v2.0.2 * 原生jar增加密钥文件的启动方式,解决类似 nohup 和 javaw 的后台启动方式无法通过控制台输入密码的问题 * v2.0.1 * 增加密钥文件的启动方式,解决类似 nohup 和 javaw 的后台启动方式无法通过控制台输入密码的问题 * 修复解密后没有删除危险模式中在MANIFEST.MF中保留的密钥信息 * v2.0.0 * 升级为v2.0.0 与 xjar版本保持一致 * v1.1.0 * 支持 Spring-Boot 以ZIP方式打包,即依赖外部化方式启动。 * 修复无加密资源时无法启动问题 * v1.0.9 * 支持危险模式加密,实现免密码启动,但是请谨慎使用! * v1.0.8 * 避免过滤器使用不当造成无法启动 * v1.0.7 * bug修复 * v1.0.6 * 将对普通jar项目或模块和spring boot项目或模块的插件方式加密整合成一个智能分析goal,配置时无需关心当前项目或模块是哪一种。 * 对于无法加密的Jar进行友好提示 * 升级 XJar 版本为 v1.1.0 * v1.0.5 * 引用新版本的XJar(v1.0.9),修复不同版本的Spring-Boot加密无法运行问题 * v1.0.4 * 第一个正式版发布 ## 协议声明 [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) ## 加入群聊 QQ 950956093 [![](https://pub.idqqimg.com/wpa/images/group.png)](https://shang.qq.com/wpa/qunwpa?idkey=e567db1c32de4b02da480d895566757b3df73e3f8827ed6c9149e2859e4cdc93)