{"id":23087648,"url":"https://github.com/exp-codes/mojo-archetype","last_synced_at":"2025-04-03T16:45:42.308Z","repository":{"id":70890517,"uuid":"148517307","full_name":"EXP-Codes/mojo-archetype","owner":"EXP-Codes","description":"Maven项目规范骨架","archived":false,"fork":false,"pushed_at":"2023-01-16T18:05:01.000Z","size":1802,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-02-09T05:27:39.449Z","etag":null,"topics":["maven","mvn","programming"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EXP-Codes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://lyy289065406.github.io/sponsor/"]}},"created_at":"2018-09-12T17:32:35.000Z","updated_at":"2023-05-03T14:57:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"8f2baebf-c6b9-4786-a467-e442ed2d766b","html_url":"https://github.com/EXP-Codes/mojo-archetype","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EXP-Codes%2Fmojo-archetype","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EXP-Codes%2Fmojo-archetype/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EXP-Codes%2Fmojo-archetype/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EXP-Codes%2Fmojo-archetype/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EXP-Codes","download_url":"https://codeload.github.com/EXP-Codes/mojo-archetype/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247043235,"owners_count":20874084,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["maven","mvn","programming"],"created_at":"2024-12-16T19:59:31.313Z","updated_at":"2025-04-03T16:45:42.295Z","avatar_url":"https://github.com/EXP-Codes.png","language":"Java","readme":"# mojo-archetype\r\nMaven项目规范骨架\r\n\r\n------\r\n\r\n- 自动化构建项目（告别重复劳动）\r\n- 规范项目结构（只要创建，就是规范）\r\n- 自动管理依赖构件（告别构件版本混乱）\r\n- 一键发布项目/基线（告别dos/unix脚本命令）\r\n\r\n\r\n## 运行环境\r\n\r\n　![](https://img.shields.io/badge/Maven-3.2.5%2B-brightgreen.svg)  ![](https://img.shields.io/badge/JDK-1.7%2B-brightgreen.svg)\r\n\r\n\r\n## 软件介绍\r\n\r\n　快速创建一个规范架构的**Java后端项目（Maven版）**，使得**项目中自动内置**：\r\n\r\n- [经验构件库](https://github.com/lyy289065406/exp-libs)：*用于快速开发的辅助包*\r\n- [Maven项目发布插件](https://github.com/lyy289065406/mojo-release-plugin)：*用于快速发布一个可运行应用到生产环境*\r\n- 混淆打包插件：*第三方插件`proguard-maven-plugin`，用于保护所发布的项目代码*\r\n- Ant插件：*第三方插件`maven-antrun-plugin`，用于拷贝项目配置、文档等资源到发布包*\r\n- 基线发布插件：*第三方插件`maven-release-plugin`，用于发布项目基线到版本库和 Nexus私服*\r\n\r\n\r\n## 使用说明\r\n\r\n- 01.　本地已安装并部署好 `apache-maven-3.2.5`（或更高版本）\r\n- 02.　下载本骨架项目 `mojo-archetype` 到本地，拷贝 `mojo-archetype/conf/archetype-catalog.xml` 文件到 `apache-maven-3.2.5/conf` 目录下，若目录下已存在同名文件，则只需把 `archetype-catalog.xml` 的内容附加进去即可：\u003cbr/\u003e\r\n```\r\n\u003c!-- Maven骨架 --\u003e\r\n\u003carchetype\u003e\r\n  \u003cgroupId\u003eexp.libs\u003c/groupId\u003e\r\n  \u003cartifactId\u003emojo-archetype\u003c/artifactId\u003e\r\n  \u003cversion\u003e1.0\u003c/version\u003e   \u003c!-- 注意版本号要根据实际发布的骨架版本号调整 --\u003e\r\n  \u003crepository\u003ehttp://127.0.0.1:8081/nexus/content/repositories/releases\u003c/repository\u003e \u003c!-- 若本地部署了Nexus私服则如实填写，这是releases库 --\u003e\r\n\u003c/archetype\u003e\r\n\u003carchetype\u003e\r\n  \u003cgroupId\u003eexp.libs\u003c/groupId\u003e\r\n  \u003cartifactId\u003emojo-archetype\u003c/artifactId\u003e\r\n  \u003cversion\u003e1.0-SNAPSHOT\u003c/version\u003e  \u003c!-- 同名骨架可配置多个版本号，但只有最高版本生效 --\u003e\r\n  \u003crepository\u003ehttp://127.0.0.1:8081/nexus/content/repositories/snapshots\u003c/repository\u003e \u003c!-- 若本地部署了Nexus私服则如实填写，这是snapshots库 --\u003e\r\n\u003c/archetype\u003e\r\n```\r\n- 03.　通过 `maven install` 命令安装骨架到本地 Maven Repository\r\n- 04.　（可选）若本地部署了 Nexus 私服，可通过 `maven deploy` 命令直接发布骨架到私服\r\n- 05.　新建Maven项目，并选择此骨架进行项目构建：\u003cbr/\u003e\r\n![新建Maven项目](https://raw.githubusercontent.com/lyy289065406/mojo-archetype/master/doc/%E6%95%88%E6%9E%9C%E6%88%AA%E5%9B%BE/01-%E9%80%89%E6%8B%A9Maven%E9%AA%A8%E6%9E%B6.png)\r\n- 06.　填写项目必要信息：\u003cbr/\u003e\r\n![填写项目必要信息](https://raw.githubusercontent.com/lyy289065406/mojo-archetype/master/doc/%E6%95%88%E6%9E%9C%E6%88%AA%E5%9B%BE/02-%E5%A1%AB%E5%86%99%E9%A1%B9%E7%9B%AE%E4%BF%A1%E6%81%AF.png)\r\n- 07.　通过骨架所生成的项目，项目中会引用到 [`构件经验库 exp-libs`](https://github.com/lyy289065406/exp-libs) 的一些功能，其组织结构如下：\u003cbr/\u003e\r\n![通过骨架所生成的项目](https://raw.githubusercontent.com/lyy289065406/mojo-archetype/master/doc/%E6%95%88%E6%9E%9C%E6%88%AA%E5%9B%BE/03-%E7%94%9F%E6%88%90%E7%9A%84%E9%A1%B9%E7%9B%AE%E6%A8%A1%E6%9D%BF.png)\r\n- 08.　通过 `maven install` 在 `target` 目录直接发布可运行应用（详见[`Maven项目发布插件 mojo-release-plugin`](https://github.com/lyy289065406/mojo-release-plugin)）：\u003cbr/\u003e\r\n![发布可运行项目到生产环境](https://raw.githubusercontent.com/lyy289065406/mojo-archetype/master/doc/%E6%95%88%E6%9E%9C%E6%88%AA%E5%9B%BE/04-%E5%8F%91%E5%B8%83%E9%A1%B9%E7%9B%AE.png)\r\n\r\n\r\n## 补充：通过本骨架所生成示例项目的pom.xml文件\r\n\r\n\u003e 点击 [这里](https://github-production-release-asset-2e65be.s3.amazonaws.com/148517307/80c29100-d2d2-11e8-88aa-212965139563?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20181018%2Fus-east-1%2Fs3%2Faws4_request\u0026X-Amz-Date=20181018T071253Z\u0026X-Amz-Expires=300\u0026X-Amz-Signature=65f0ae903b69ba30b4a20d7530a66975bc7ef32db62958485a930f2308292e8d\u0026X-Amz-SignedHeaders=host\u0026actor_id=17040287\u0026response-content-disposition=attachment%3B%20filename%3Ddemo-archetype.zip\u0026response-content-type=application%2Foctet-stream) 下载示例项目\r\n\r\n\r\n```xml\r\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003cproject xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n    xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\"\u003e\r\n    \u003cmodelVersion\u003e4.0.0\u003c/modelVersion\u003e\r\n\r\n    \u003c!--项目基本信息(必填)--\u003e\r\n    \u003cgroupId\u003eexp.libs\u003c/groupId\u003e\r\n    \u003cartifactId\u003edemo-archetype\u003c/artifactId\u003e\r\n    \u003cversion\u003e1.0-SNAPSHOT\u003c/version\u003e\r\n    \u003cpackaging\u003ejar\u003c/packaging\u003e\r\n\r\n    \u003cname\u003e项目名称(可选)\u003c/name\u003e\r\n    \u003cdescription\u003e项目描述(可选)\u003c/description\u003e\r\n    \u003curl\u003e项目SVN路径(可选)\u003c/url\u003e\r\n    \u003cinceptionYear\u003e工程的初始时间(可选)\u003c/inceptionYear\u003e\r\n\r\n    \u003c!--项目的问题管理系统(可选)--\u003e\r\n    \u003cissueManagement\u003e\r\n        \u003csystem\u003eEXPLIBS-API-ONLINE\u003c/system\u003e\r\n        \u003curl\u003ehttps://lyy289065406.github.io/api-online/\u003c/url\u003e\r\n    \u003c/issueManagement\u003e\r\n    \r\n    \u003c!--项目的问题追踪系统(可选)--\u003e\r\n    \u003cciManagement\u003e\r\n        \u003csystem\u003ejenkins\u003c/system\u003e\r\n        \u003curl\u003ehttp://127.0.0.1:8080/jenkins/\u003c/url\u003e\r\n    \u003c/ciManagement\u003e\r\n    \r\n    \u003c!-- 软件配置管理 --\u003e\r\n    \u003cscm\u003e\r\n        \u003c!-- 项目SVN主干目录（需保证目录已存在） --\u003e\r\n        \u003cconnection\u003escm:svn:http://127.0.0.1:81/svn/release/???/trunk\u003c/connection\u003e\r\n        \u003cdeveloperConnection\u003escm:svn:http://127.0.0.1:81/svn/release/???/trunk\u003c/developerConnection\u003e\r\n        \u003curl\u003escm:svn:http://127.0.0.1:81/svn/release/???/trunk\u003c/url\u003e\r\n    \u003c/scm\u003e\r\n\r\n    \u003c!-- 变量定义 --\u003e\r\n    \u003cproperties\u003e\r\n        \u003cproject.build.sourceEncoding\u003eUTF-8\u003c/project.build.sourceEncoding\u003e\r\n        \u003crelease.dir\u003e${project.build.directory}/${project.artifactId}-${project.version}\u003c/release.dir\u003e\r\n        \u003cjdk.version\u003e1.6\u003c/jdk.version\u003e\r\n        \u003cexplibs.version\u003e1.0\u003c/explibs.version\u003e\r\n        \u003cmrp.plugin.version\u003e1.0\u003c/mrp.plugin.version\u003e\r\n    \u003c/properties\u003e\r\n\r\n    \u003c!-- 项目依赖 --\u003e\r\n    \u003cdependencies\u003e\r\n    \r\n        \u003c!-- 经验库 --\u003e\r\n        \u003cdependency\u003e\r\n          \u003cgroupId\u003eexp.libs\u003c/groupId\u003e\r\n          \u003cartifactId\u003eexp-libs\u003c/artifactId\u003e\r\n          \u003cversion\u003e${explibs.version}\u003c/version\u003e\r\n        \u003c/dependency\u003e\r\n        \r\n        \u003c!-- 单元测试 --\u003e\r\n        \u003cdependency\u003e\r\n            \u003cgroupId\u003ejunit\u003c/groupId\u003e\r\n            \u003cartifactId\u003ejunit\u003c/artifactId\u003e\r\n            \u003cversion\u003e4.8.2\u003c/version\u003e\r\n            \u003cscope\u003etest\u003c/scope\u003e\r\n        \u003c/dependency\u003e\r\n\r\n    \u003c/dependencies\u003e\r\n\r\n    \u003c!-- 项目构建 --\u003e\r\n    \u003cbuild\u003e\r\n        \u003cplugins\u003e\r\n\r\n            \u003c!-- 指定项目JDK版本 --\u003e\r\n            \u003cplugin\u003e\r\n                \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\r\n                \u003cartifactId\u003emaven-compiler-plugin\u003c/artifactId\u003e\r\n                \u003cconfiguration\u003e\r\n                    \u003csource\u003e${jdk.version}\u003c/source\u003e\r\n                    \u003ctarget\u003e${jdk.version}\u003c/target\u003e\r\n                \u003c/configuration\u003e\r\n            \u003c/plugin\u003e\r\n            \r\n            \u003c!-- 版本打包插件，在dos跳转到项目根目录，依次执行（需保证没有引用快照、本地与SVN服务器内容完全一致）: \r\n                1 发布基线到svn: mvn release:prepare \r\n                2 发布引用到私服 : mvn release:perform --\u003e\r\n            \u003cplugin\u003e\r\n                \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\r\n                \u003cartifactId\u003emaven-release-plugin\u003c/artifactId\u003e\r\n                \u003cversion\u003e2.3.2\u003c/version\u003e\r\n                \u003cconfiguration\u003e\r\n                    \u003c!-- 项目的SVN基线目录（需保证目录已存在） --\u003e\r\n                    \u003ctagBase\u003ehttp://127.0.0.1:81/svn/release/???/tags\u003c/tagBase\u003e\r\n                \u003c/configuration\u003e\r\n            \u003c/plugin\u003e\r\n\r\n            \u003c!-- 测试插件 --\u003e\r\n            \u003cplugin\u003e\r\n                \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\r\n                \u003cartifactId\u003emaven-surefire-plugin\u003c/artifactId\u003e\r\n                \u003cversion\u003e2.7.2\u003c/version\u003e\r\n                \u003cconfiguration\u003e\r\n                    \u003c!-- 解决控制台输出乱码问题 --\u003e\r\n                    \u003cforkMode\u003eonce\u003c/forkMode\u003e\r\n                    \u003cargLine\u003e-Dfile.encoding=UTF-8\u003c/argLine\u003e\r\n                    \u003csystemProperties\u003e\r\n                        \u003cproperty\u003e\r\n                            \u003cname\u003enet.sourceforge.cobertura.datafile\u003c/name\u003e\r\n                            \u003cvalue\u003etarget/cobertura/cobertura.ser\u003c/value\u003e\r\n                        \u003c/property\u003e\r\n                    \u003c/systemProperties\u003e\r\n                    \u003c!-- 项目打包时是否跳过d单元测试 --\u003e\r\n                    \u003cskipTests\u003etrue\u003c/skipTests\u003e\r\n                \u003c/configuration\u003e\r\n            \u003c/plugin\u003e\r\n            \r\n            \u003c!-- 混淆打包插件 --\u003e\r\n            \u003cplugin\u003e\r\n                \u003cgroupId\u003ecom.github.wvengen\u003c/groupId\u003e\r\n                \u003cartifactId\u003eproguard-maven-plugin\u003c/artifactId\u003e\r\n                \u003cversion\u003e2.0.7\u003c/version\u003e\r\n                \u003cexecutions\u003e\r\n                    \u003cexecution\u003e\r\n                        \u003cphase\u003epackage\u003c/phase\u003e    \u003c!-- 触发混淆打包的maven周期 --\u003e\r\n                        \u003cgoals\u003e\r\n                            \u003cgoal\u003eproguard\u003c/goal\u003e\r\n                        \u003c/goals\u003e\r\n                    \u003c/execution\u003e\r\n                \u003c/executions\u003e\r\n                \u003cconfiguration\u003e\r\n                    \u003c!-- attach 的作用是在 install/deploy 时, 将生成的 pg 文件也安装/部署 --\u003e\r\n                    \u003cattach\u003efalse\u003c/attach\u003e\r\n                    \u003cattachArtifactClassifier\u003epg\u003c/attachArtifactClassifier\u003e\r\n                    \r\n                    \u003c!-- 指定混淆处理所需要的库文件 --\u003e\r\n                    \u003clibs\u003e\r\n                        \u003clib\u003e${java.home}/lib/rt.jar\u003c/lib\u003e \u003c!-- 运行时库rt是必须的 --\u003e\r\n                    \u003c/libs\u003e\r\n                    \r\n                    \u003c!-- 指定要做混淆处理的 应用程序jar、war、ear，或目录 --\u003e\r\n                    \u003cinjar\u003e\u003c/injar\u003e\r\n                    \r\n                    \u003c!-- 指定混淆处理完后要输出的jar、war、ear，及其目录名称 --\u003e\r\n                    \u003coutjar\u003e${project.build.finalName}-pg\u003c/outjar\u003e\r\n                    \r\n                    \u003c!-- 混淆规则: 详细配置方式参考 ProGuard 官方文档 --\u003e\r\n                    \u003coptions\u003e\r\n                        \u003coption\u003e-ignorewarnings\u003c/option\u003e         \u003c!-- 忽略混淆警告 --\u003e\r\n                        \u003c!-- option\u003e-dontobfuscate\u003c/option --\u003e    \u003c!-- 不混淆输入的类文件 --\u003e\r\n                        \u003coption\u003e-dontshrink\u003c/option\u003e               \u003c!-- 不压缩输入的类文件 --\u003e\r\n                        \u003coption\u003e-dontoptimize\u003c/option\u003e             \u003c!-- 不做代码优化 --\u003e\r\n                        \u003coption\u003e-dontskipnonpubliclibraryclasses\u003c/option\u003e        \u003c!-- 不跳过私有依赖的类库 --\u003e\r\n                        \u003coption\u003e-dontskipnonpubliclibraryclassmembers\u003c/option\u003e    \u003c!-- 不跳过私有依赖的类库成员 --\u003e\r\n                        \u003c!-- option\u003e-overloadaggressively\u003c/option --\u003e                \u003c!-- 混淆时应用侵入式重载 --\u003e\r\n                        \u003c!-- option\u003e-obfuscationdictionary {filename}\u003c/option --\u003e    \u003c!-- 使用给定文件中的关键字作为要混淆方法的名称 --\u003e\r\n                        \u003c!-- option\u003e-applymapping {filename}\u003c/option --\u003e            \u003c!-- 重用映射增加混淆 --\u003e\r\n                        \u003c!-- option\u003e-useuniqueclassmembernames\u003c/option --\u003e            \u003c!-- 确定统一的混淆类的成员名称来增加混淆 --\u003e\r\n                        \u003c!-- option\u003e-dontusemixedcaseclassnames\u003c/option --\u003e            \u003c!-- 混淆时不会产生形形色色的类名 --\u003e\r\n                        \u003c!-- option\u003e-renamesourcefileattribute {string}\u003c/option --\u003e    \u003c!-- 设置源文件中给定的字符串常量 --\u003e\r\n                        \u003c!-- option\u003e-flattenpackagehierarchy {package_name}\u003c/option --\u003e    \u003c!-- 重新包装所有重命名的包并放在给定的单一包中 --\u003e\r\n                        \u003c!-- option\u003e-repackageclass {package_name}\u003c/option --\u003e            \u003c!-- 重新包装所有重命名的类文件中放在给定的单一包中 --\u003e\r\n            \r\n            \r\n                        \u003c!--平行包结构（重构包层次），所有混淆的代码放在 pg 包下 --\u003e\r\n                        \u003c!-- 最好不要随便放, 若有多个项目混淆，不同jar的混淆类可能重名 --\u003e\r\n                        \u003c!-- 建议为{project.root.package}.pg （不存在此变量，此处仅为了说明） --\u003e\r\n                        \u003coption\u003e-repackageclasses exp.libs.pojo.pg\u003c/option\u003e\r\n            \r\n                        \u003c!-- 保留[源码] --\u003e\u003c!-- 按实际项目切换 --\u003e\r\n                        \u003c!-- option\u003e-keepattributes SourceFile\u003c/option --\u003e\r\n                        \r\n                        \u003c!-- 保留[行号] --\u003e\u003c!-- 按实际项目切换 --\u003e\r\n                        \u003coption\u003e-keepattributes LineNumberTable\u003c/option\u003e\r\n                        \r\n                        \u003c!-- 保留[注释] --\u003e\u003c!-- 按实际项目切换 --\u003e\r\n                        \u003c!-- option\u003e-keepattributes *Annotation*\u003c/option --\u003e\r\n                        \r\n                        \u003c!-- 保留[注解] --\u003e\u003c!-- 按实际项目切换 --\u003e\r\n                        \u003c!-- option\u003e-keepattributes Signature\u003c/option --\u003e\r\n                        \r\n                        \u003c!-- 保持[入口类]不变 --\u003e\r\n                        \u003c!-- 按实际项目修正 --\u003e\r\n                        \u003coption\u003e-keep class \r\n                            exp.libs.pojo.Version,\r\n                            exp.libs.pojo.Main\r\n                        \u003c/option\u003e\r\n                        \r\n                        \u003c!-- 保持[Bean类]不变（若框架对 Bean中的内容做了反射处理，则必须保持不变） --\u003e\r\n                        \u003c!-- 按实际项目修正 --\u003e\r\n                        \u003coption\u003e-keep class exp.libs.pojo.bean.** { *;}\u003c/option\u003e\r\n                        \r\n                        \u003c!-- 保持[所有入口方法]不变 --\u003e\r\n                        \u003c!-- 固定不变 --\u003e\r\n                        \u003coption\u003e-keepclasseswithmembers public class * { \r\n                                    public static void main(java.lang.String[]);\r\n                                }\r\n                        \u003c/option\u003e\r\n                        \r\n                        \u003c!-- 保持[对外API的类名和方法名]不变 --\u003e\r\n                        \u003c!-- 按实际项目修正 --\u003e\r\n                        \u003coption\u003e-keep class exp.libs.pojo.api.** { *;}\u003c/option\u003e\r\n                        \r\n                        \u003c!-- 保持[所有本地化方法]不变 --\u003e\r\n                        \u003c!-- 固定不变 --\u003e\r\n                        \u003coption\u003e-keepclasseswithmembernames class * {\r\n                                    native \u0026lt;methods\u0026gt;;\r\n                                }\r\n                        \u003c/option\u003e\r\n                        \r\n                        \u003c!-- 保持[所有类成员变量]不变 --\u003e\r\n                        \u003c!-- 按实际项目修正 --\u003e\r\n                        \u003c!-- option\u003e-keepclassmembers class * {\r\n                                    \u0026lt;fields\u0026gt;;\r\n                                }\r\n                        \u003c/option --\u003e\r\n                        \r\n                        \u003c!-- 保持[所有枚举类必须的方法]不变 --\u003e\r\n                        \u003c!-- 固定不变 --\u003e\r\n                        \u003coption\u003e-keepclassmembers class * extends java.lang.Enum {\r\n                                    public static **[] values();\r\n                                    public static ** valueOf(java.lang.String);\r\n                                }\r\n                        \u003c/option\u003e\r\n                        \r\n                        \u003c!-- 保持[所有序列化接口]不变（若项目中不使用序列化，也可注释） --\u003e\r\n                        \u003c!-- 固定不变 --\u003e\r\n                        \u003coption\u003e-keepclassmembers class * implements java.io.Serializable {\r\n                                    static final long serialVersionUID;\r\n                                    static final java.io.ObjectStreamField[] serialPersistentFields;\r\n                                    private void writeObject(java.io.ObjectOutputStream);\r\n                                    private void readObject(java.io.ObjectInputStream);\r\n                                    java.lang.Object writeReplace();\r\n                                    java.lang.Object readResolve();\r\n                                }\r\n                        \u003c/option\u003e\r\n                    \u003c/options\u003e\r\n                \u003c/configuration\u003e\r\n            \u003c/plugin\u003e\r\n\r\n            \u003c!-- Ant插件：项目部署文件复制 --\u003e\r\n            \u003cplugin\u003e\r\n                \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\r\n                \u003cartifactId\u003emaven-antrun-plugin\u003c/artifactId\u003e\r\n                \u003cversion\u003e1.7\u003c/version\u003e\r\n                \u003cexecutions\u003e\r\n                    \u003cexecution\u003e\r\n                        \u003cid\u003eant-build\u003c/id\u003e\r\n                        \u003cphase\u003einstall\u003c/phase\u003e\r\n                        \u003cgoals\u003e\r\n                            \u003cgoal\u003erun\u003c/goal\u003e\r\n                        \u003c/goals\u003e\r\n                        \u003cconfiguration\u003e\r\n                            \u003ctarget\u003e\r\n                                \u003cecho\u003e拷贝数据库脚本\u003c/echo\u003e\r\n                                \u003ccopy todir=\"${release.dir}/script\"\u003e\r\n                                    \u003cfileset dir=\"script\"\u003e\u003c/fileset\u003e\r\n                                \u003c/copy\u003e\r\n                                \u003cecho\u003e拷贝项目配置文件\u003c/echo\u003e\r\n                                \u003ccopy todir=\"${release.dir}/conf\"\u003e\r\n                                    \u003cfileset dir=\"conf\" /\u003e\r\n                                \u003c/copy\u003e\r\n                                \u003cecho\u003e拷贝文档\u003c/echo\u003e\r\n                                \u003ccopy todir=\"${release.dir}/doc/04_维护文档\"\u003e\r\n                                    \u003cfileset dir=\"doc/04_维护文档\" /\u003e\r\n                                \u003c/copy\u003e\r\n                                \u003ccopy todir=\"${release.dir}/doc/06_使用文档\"\u003e\r\n                                    \u003cfileset dir=\"doc/06_使用文档\" /\u003e\r\n                                \u003c/copy\u003e\r\n                                \u003ccopy todir=\"${release.dir}/doc/07_演示文档\"\u003e\r\n                                    \u003cfileset dir=\"doc/07_演示文档\" /\u003e\r\n                                \u003c/copy\u003e\r\n                            \u003c/target\u003e\r\n                        \u003c/configuration\u003e\r\n                    \u003c/execution\u003e\r\n                \u003c/executions\u003e\r\n            \u003c/plugin\u003e\r\n            \r\n            \u003c!-- 项目发布插件(自动生成脚本) --\u003e\r\n            \u003cplugin\u003e\r\n                \u003cgroupId\u003eexp.libs\u003c/groupId\u003e\r\n                \u003cartifactId\u003emojo-release-plugin\u003c/artifactId\u003e\r\n                \u003cversion\u003e${mrp.plugin.version}\u003c/version\u003e\r\n                \u003cexecutions\u003e\r\n                    \u003cexecution\u003e\r\n                        \u003cid\u003emrp\u003c/id\u003e\r\n                        \u003cphase\u003einstall\u003c/phase\u003e\r\n                        \u003cgoals\u003e\r\n                            \u003cgoal\u003einstall\u003c/goal\u003e\r\n                        \u003c/goals\u003e\r\n                        \u003cconfiguration\u003e\r\n                            \u003cmavenRepository\u003eD:\\mavenRepository\u003c/mavenRepository\u003e\r\n                            \u003cverClass\u003eexp.libs.pojo.Version\u003c/verClass\u003e\r\n                            \u003cmainClass\u003eexp.libs.pojo.Main\u003c/mainClass\u003e\r\n                            \u003cmainArgs\u003e\u003c/mainArgs\u003e\r\n                            \u003ccharset\u003eUTF-8\u003c/charset\u003e\r\n                            \u003cjdkPath\u003ejava\u003c/jdkPath\u003e\r\n                            \u003cxms\u003e32m\u003c/xms\u003e\r\n                            \u003cxmx\u003e64m\u003c/xmx\u003e\r\n                            \u003cjdkParams\u003e\u003c/jdkParams\u003e\r\n                            \u003cnoVerJarRegex\u003eexp-?libs-.*\u003c/noVerJarRegex\u003e \u003c!-- 不使用版本号的依赖构件(正则式) --\u003e\r\n                            \u003cproguard\u003efalse\u003c/proguard\u003e  \u003c!-- 是否使用混淆包(需配置混淆打包插件) --\u003e\r\n                        \u003c/configuration\u003e\r\n                    \u003c/execution\u003e\r\n                \u003c/executions\u003e\r\n            \u003c/plugin\u003e\r\n            \r\n            \u003c!-- 打包源码: 项目发布基线版本时会自动打包源码，不要启用此插件，否则会失败 --\u003e\r\n            \u003c!-- plugin\u003e\r\n                \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\r\n                \u003cartifactId\u003emaven-source-plugin\u003c/artifactId\u003e\r\n                \u003cversion\u003e2.1.2\u003c/version\u003e\r\n                \u003cexecutions\u003e\r\n                    \u003cexecution\u003e\r\n                        \u003cid\u003eattach-sources\u003c/id\u003e\r\n                        \u003cphase\u003everify\u003c/phase\u003e\r\n                        \u003cgoals\u003e\r\n                            \u003cgoal\u003ejar-no-fork\u003c/goal\u003e\r\n                            \u003cgoal\u003etest-jar-no-fork\u003c/goal\u003e\r\n                        \u003c/goals\u003e\r\n                    \u003c/execution\u003e\r\n                \u003c/executions\u003e\r\n            \u003c/plugin --\u003e\r\n\r\n            \u003c!-- 打包javadoc: 项目发布基线版本时会自动打包javadoc，若报错不要启用此插件 --\u003e\r\n            \u003c!-- javadoc插件会强制使用GBK读取pom文件的内容, 若得到的html网页标题乱码,  --\u003e\r\n            \u003c!-- 则需要通过Run Configurations -\u003e 自定义Maven install命令 -\u003e Common -\u003e Encoding:GBK 确保不会乱码 --\u003e\r\n            \u003cplugin\u003e\r\n                \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\r\n                \u003cartifactId\u003emaven-javadoc-plugin\u003c/artifactId\u003e\r\n                \u003cversion\u003e2.9.1\u003c/version\u003e\r\n                \u003cconfiguration\u003e\r\n                    \u003caggregate\u003etrue\u003c/aggregate\u003e\r\n                    \u003ccharset\u003eUTF-8\u003c/charset\u003e\r\n                    \u003cencoding\u003eUTF-8\u003c/encoding\u003e\r\n                    \u003cdocencoding\u003eUTF-8\u003c/docencoding\u003e\r\n                \u003c/configuration\u003e\r\n                \u003cexecutions\u003e\r\n                    \u003cexecution\u003e\r\n                        \u003cid\u003eattach-javadocs\u003c/id\u003e\r\n                        \u003cgoals\u003e\r\n                            \u003cgoal\u003ejar\u003c/goal\u003e\r\n                        \u003c/goals\u003e\r\n                    \u003c/execution\u003e\r\n                \u003c/executions\u003e\r\n            \u003c/plugin\u003e\r\n\r\n        \u003c/plugins\u003e\r\n    \u003c/build\u003e\r\n\r\n    \u003c!-- 项目发布管理 --\u003e\r\n    \u003cdistributionManagement\u003e\r\n    \r\n        \u003c!-- 私服地址 ，基线仓库 --\u003e\r\n        \u003crepository\u003e\r\n            \u003cid\u003eReleases\u003c/id\u003e\r\n            \u003curl\u003ehttp://127.0.0.1:8081/nexus/content/repositories/releases\u003c/url\u003e\r\n        \u003c/repository\u003e\r\n        \r\n        \u003c!-- 私服地址 ，快照仓库 --\u003e\r\n        \u003csnapshotRepository\u003e\r\n            \u003cid\u003eSnapshots\u003c/id\u003e\r\n            \u003curl\u003ehttp://127.0.0.1:8081/nexus/content/repositories/snapshots\u003c/url\u003e\r\n        \u003c/snapshotRepository\u003e\r\n    \u003c/distributionManagement\u003e\r\n\u003c/project\u003e\r\n\r\n```\r\n\r\n## 版权声明\r\n\r\n　[![Copyright (C) EXP,2016](https://img.shields.io/badge/Copyright%20(C)-EXP%202016-blue.svg)](http://exp-blog.com)　[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\r\n  \r\n\r\n- Site: [http://exp-blog.com](http://exp-blog.com) \r\n- Mail: \u003ca href=\"mailto:289065406@qq.com?subject=[EXP's Github]%20Your%20Question%20（请写下您的疑问）\u0026amp;body=What%20can%20I%20help%20you?%20（需要我提供什么帮助吗？）\"\u003e289065406@qq.com\u003c/a\u003e\r\n\r\n\r\n------\r\n","funding_links":["https://lyy289065406.github.io/sponsor/"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexp-codes%2Fmojo-archetype","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexp-codes%2Fmojo-archetype","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexp-codes%2Fmojo-archetype/lists"}