An open API service indexing awesome lists of open source software.

https://github.com/exp-codes/mojo-archetype

Maven项目规范骨架
https://github.com/exp-codes/mojo-archetype

maven mvn programming

Last synced: 9 months ago
JSON representation

Maven项目规范骨架

Awesome Lists containing this project

README

          

# mojo-archetype
Maven项目规范骨架

------

- 自动化构建项目(告别重复劳动)
- 规范项目结构(只要创建,就是规范)
- 自动管理依赖构件(告别构件版本混乱)
- 一键发布项目/基线(告别dos/unix脚本命令)

## 运行环境

 ![](https://img.shields.io/badge/Maven-3.2.5%2B-brightgreen.svg) ![](https://img.shields.io/badge/JDK-1.7%2B-brightgreen.svg)

## 软件介绍

 快速创建一个规范架构的**Java后端项目(Maven版)**,使得**项目中自动内置**:

- [经验构件库](https://github.com/lyy289065406/exp-libs):*用于快速开发的辅助包*
- [Maven项目发布插件](https://github.com/lyy289065406/mojo-release-plugin):*用于快速发布一个可运行应用到生产环境*
- 混淆打包插件:*第三方插件`proguard-maven-plugin`,用于保护所发布的项目代码*
- Ant插件:*第三方插件`maven-antrun-plugin`,用于拷贝项目配置、文档等资源到发布包*
- 基线发布插件:*第三方插件`maven-release-plugin`,用于发布项目基线到版本库和 Nexus私服*

## 使用说明

- 01. 本地已安装并部署好 `apache-maven-3.2.5`(或更高版本)
- 02. 下载本骨架项目 `mojo-archetype` 到本地,拷贝 `mojo-archetype/conf/archetype-catalog.xml` 文件到 `apache-maven-3.2.5/conf` 目录下,若目录下已存在同名文件,则只需把 `archetype-catalog.xml` 的内容附加进去即可:

```

exp.libs
mojo-archetype
1.0
http://127.0.0.1:8081/nexus/content/repositories/releases

exp.libs
mojo-archetype
1.0-SNAPSHOT
http://127.0.0.1:8081/nexus/content/repositories/snapshots

```
- 03. 通过 `maven install` 命令安装骨架到本地 Maven Repository
- 04. (可选)若本地部署了 Nexus 私服,可通过 `maven deploy` 命令直接发布骨架到私服
- 05. 新建Maven项目,并选择此骨架进行项目构建:

![新建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)
- 06. 填写项目必要信息:

![填写项目必要信息](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)
- 07. 通过骨架所生成的项目,项目中会引用到 [`构件经验库 exp-libs`](https://github.com/lyy289065406/exp-libs) 的一些功能,其组织结构如下:

![通过骨架所生成的项目](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)
- 08. 通过 `maven install` 在 `target` 目录直接发布可运行应用(详见[`Maven项目发布插件 mojo-release-plugin`](https://github.com/lyy289065406/mojo-release-plugin)):

![发布可运行项目到生产环境](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)

## 补充:通过本骨架所生成示例项目的pom.xml文件

> 点击 [这里](https://github-production-release-asset-2e65be.s3.amazonaws.com/148517307/80c29100-d2d2-11e8-88aa-212965139563?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20181018%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20181018T071253Z&X-Amz-Expires=300&X-Amz-Signature=65f0ae903b69ba30b4a20d7530a66975bc7ef32db62958485a930f2308292e8d&X-Amz-SignedHeaders=host&actor_id=17040287&response-content-disposition=attachment%3B%20filename%3Ddemo-archetype.zip&response-content-type=application%2Foctet-stream) 下载示例项目

```xml

4.0.0


exp.libs
demo-archetype
1.0-SNAPSHOT
jar

项目名称(可选)
项目描述(可选)
项目SVN路径(可选)
工程的初始时间(可选)



EXPLIBS-API-ONLINE
https://lyy289065406.github.io/api-online/




jenkins
http://127.0.0.1:8080/jenkins/





scm:svn:http://127.0.0.1:81/svn/release/???/trunk
scm:svn:http://127.0.0.1:81/svn/release/???/trunk
scm:svn:http://127.0.0.1:81/svn/release/???/trunk



UTF-8
${project.build.directory}/${project.artifactId}-${project.version}
1.6
1.0
1.0






exp.libs
exp-libs
${explibs.version}




junit
junit
4.8.2
test





org.apache.maven.plugins
maven-compiler-plugin

${jdk.version}
${jdk.version}





org.apache.maven.plugins
maven-release-plugin
2.3.2


http://127.0.0.1:81/svn/release/???/tags



org.apache.maven.plugins
maven-surefire-plugin
2.7.2


once
-Dfile.encoding=UTF-8


net.sourceforge.cobertura.datafile
target/cobertura/cobertura.ser



true





com.github.wvengen
proguard-maven-plugin
2.0.7


package

proguard





false
pg



${java.home}/lib/rt.jar






${project.build.finalName}-pg



-ignorewarnings

-dontshrink
-dontoptimize
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers













-repackageclasses exp.libs.pojo.pg





-keepattributes LineNumberTable









-keep class
exp.libs.pojo.Version,
exp.libs.pojo.Main




-keep class exp.libs.pojo.bean.** { *;}



-keepclasseswithmembers public class * {
public static void main(java.lang.String[]);
}




-keep class exp.libs.pojo.api.** { *;}



-keepclasseswithmembernames class * {
native <methods>;
}








-keepclassmembers class * extends java.lang.Enum {
public static **[] values();
public static ** valueOf(java.lang.String);
}




-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}





org.apache.maven.plugins
maven-antrun-plugin
1.7


ant-build
install

run



拷贝数据库脚本



拷贝项目配置文件



拷贝文档

















exp.libs
mojo-release-plugin
${mrp.plugin.version}


mrp
install

install


D:\mavenRepository
exp.libs.pojo.Version
exp.libs.pojo.Main

UTF-8
java
32m
64m

exp-?libs-.*
false










org.apache.maven.plugins
maven-javadoc-plugin
2.9.1

true
UTF-8
UTF-8
UTF-8



attach-javadocs

jar









Releases
http://127.0.0.1:8081/nexus/content/repositories/releases




Snapshots
http://127.0.0.1:8081/nexus/content/repositories/snapshots

```

## 版权声明

 [![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)

- Site: [http://exp-blog.com](http://exp-blog.com)
- Mail: 289065406@qq.com

------