Skip to content

Commit b14a541

Browse files
committed
更新README
1 parent acfc516 commit b14a541

1 file changed

Lines changed: 365 additions & 0 deletions

File tree

README.md

Lines changed: 365 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,372 @@ Maven项目规范骨架
5151
![发布可运行项目到生产环境](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)
5252

5353

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

56+
```xml
57+
<?xml version="1.0" encoding="UTF-8"?>
58+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
59+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
60+
<modelVersion>4.0.0</modelVersion>
61+
62+
<!--项目基本信息(必填)-->
63+
<groupId>exp.libs</groupId>
64+
<artifactId>demo-archetype</artifactId>
65+
<version>1.0-SNAPSHOT</version>
66+
<packaging>jar</packaging>
67+
68+
<name>项目名称(可选)</name>
69+
<description>项目描述(可选)</description>
70+
<url>项目SVN路径(可选)</url>
71+
<inceptionYear>工程的初始时间(可选)</inceptionYear>
72+
73+
<!--项目的问题管理系统(可选)-->
74+
<issueManagement>
75+
<system>EXPLIBS-API-ONLINE</system>
76+
<url>https://lyy289065406.github.io/api-online/</url>
77+
</issueManagement>
78+
79+
<!--项目的问题追踪系统(可选)-->
80+
<ciManagement>
81+
<system>jenkins</system>
82+
<url>http://127.0.0.1:8080/jenkins/</url>
83+
</ciManagement>
84+
85+
<!-- 软件配置管理 -->
86+
<scm>
87+
<!-- 项目SVN主干目录(需保证目录已存在) -->
88+
<connection>scm:svn:http://127.0.0.1:81/svn/release/???/trunk</connection>
89+
<developerConnection>scm:svn:http://127.0.0.1:81/svn/release/???/trunk</developerConnection>
90+
<url>scm:svn:http://127.0.0.1:81/svn/release/???/trunk</url>
91+
</scm>
92+
93+
<!-- 变量定义 -->
94+
<properties>
95+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
96+
<release.dir>${project.build.directory}/${project.artifactId}-${project.version}</release.dir>
97+
<jdk.version>1.6</jdk.version>
98+
<explibs.version>1.0-SNAPSHOT</explibs.version>
99+
<mrp.plugin.version>1.0-SNAPSHOT</mrp.plugin.version>
100+
</properties>
101+
102+
<!-- 项目依赖 -->
103+
<dependencies>
104+
105+
<!-- 经验库 -->
106+
<dependency>
107+
<groupId>exp.libs</groupId>
108+
<artifactId>exp-libs</artifactId>
109+
<version>${explibs.version}</version>
110+
</dependency>
111+
112+
<!-- 单元测试 -->
113+
<dependency>
114+
<groupId>junit</groupId>
115+
<artifactId>junit</artifactId>
116+
<version>4.8.2</version>
117+
<scope>test</scope>
118+
</dependency>
119+
120+
</dependencies>
121+
122+
<!-- 项目构建 -->
123+
<build>
124+
<plugins>
125+
126+
<!-- 指定项目JDK版本 -->
127+
<plugin>
128+
<groupId>org.apache.maven.plugins</groupId>
129+
<artifactId>maven-compiler-plugin</artifactId>
130+
<configuration>
131+
<source>${jdk.version}</source>
132+
<target>${jdk.version}</target>
133+
</configuration>
134+
</plugin>
135+
136+
<!-- 版本打包插件,在dos跳转到项目根目录,依次执行(需保证没有引用快照、本地与SVN服务器内容完全一致):
137+
1 发布基线到svn: mvn release:prepare
138+
2 发布引用到私服 : mvn release:perform -->
139+
<plugin>
140+
<groupId>org.apache.maven.plugins</groupId>
141+
<artifactId>maven-release-plugin</artifactId>
142+
<version>2.3.2</version>
143+
<configuration>
144+
<!-- 项目的SVN基线目录(需保证目录已存在) -->
145+
<tagBase>http://127.0.0.1:81/svn/release/???/tags</tagBase>
146+
</configuration>
147+
</plugin>
148+
149+
<!-- 测试插件 -->
150+
<plugin>
151+
<groupId>org.apache.maven.plugins</groupId>
152+
<artifactId>maven-surefire-plugin</artifactId>
153+
<version>2.7.2</version>
154+
<configuration>
155+
<!-- 解决控制台输出乱码问题 -->
156+
<forkMode>once</forkMode>
157+
<argLine>-Dfile.encoding=UTF-8</argLine>
158+
<systemProperties>
159+
<property>
160+
<name>net.sourceforge.cobertura.datafile</name>
161+
<value>target/cobertura/cobertura.ser</value>
162+
</property>
163+
</systemProperties>
164+
<!-- 项目打包时是否跳过d单元测试 -->
165+
<skipTests>true</skipTests>
166+
</configuration>
167+
</plugin>
168+
169+
<!-- 混淆打包插件 -->
170+
<plugin>
171+
<groupId>com.github.wvengen</groupId>
172+
<artifactId>proguard-maven-plugin</artifactId>
173+
<version>2.0.7</version>
174+
<executions>
175+
<execution>
176+
<phase>package</phase> <!-- 触发混淆打包的maven周期 -->
177+
<goals>
178+
<goal>proguard</goal>
179+
</goals>
180+
</execution>
181+
</executions>
182+
<configuration>
183+
<!-- attach 的作用是在 install/deploy 时, 将生成的 pg 文件也安装/部署 -->
184+
<attach>false</attach>
185+
<attachArtifactClassifier>pg</attachArtifactClassifier>
186+
187+
<!-- 指定混淆处理所需要的库文件 -->
188+
<libs>
189+
<lib>${java.home}/lib/rt.jar</lib> <!-- 运行时库rt是必须的 -->
190+
</libs>
191+
192+
<!-- 指定要做混淆处理的 应用程序jar、war、ear,或目录 -->
193+
<injar></injar>
194+
195+
<!-- 指定混淆处理完后要输出的jar、war、ear,及其目录名称 -->
196+
<outjar>${project.build.finalName}-pg</outjar>
197+
198+
<!-- 混淆规则: 详细配置方式参考 ProGuard 官方文档 -->
199+
<options>
200+
<option>-ignorewarnings</option> <!-- 忽略混淆警告 -->
201+
<!-- option>-dontobfuscate</option --> <!-- 不混淆输入的类文件 -->
202+
<option>-dontshrink</option> <!-- 不压缩输入的类文件 -->
203+
<option>-dontoptimize</option> <!-- 不做代码优化 -->
204+
<option>-dontskipnonpubliclibraryclasses</option> <!-- 不跳过私有依赖的类库 -->
205+
<option>-dontskipnonpubliclibraryclassmembers</option> <!-- 不跳过私有依赖的类库成员 -->
206+
<!-- option>-overloadaggressively</option --> <!-- 混淆时应用侵入式重载 -->
207+
<!-- option>-obfuscationdictionary {filename}</option --> <!-- 使用给定文件中的关键字作为要混淆方法的名称 -->
208+
<!-- option>-applymapping {filename}</option --> <!-- 重用映射增加混淆 -->
209+
<!-- option>-useuniqueclassmembernames</option --> <!-- 确定统一的混淆类的成员名称来增加混淆 -->
210+
<!-- option>-dontusemixedcaseclassnames</option --> <!-- 混淆时不会产生形形色色的类名 -->
211+
<!-- option>-renamesourcefileattribute {string}</option --> <!-- 设置源文件中给定的字符串常量 -->
212+
<!-- option>-flattenpackagehierarchy {package_name}</option --> <!-- 重新包装所有重命名的包并放在给定的单一包中 -->
213+
<!-- option>-repackageclass {package_name}</option --> <!-- 重新包装所有重命名的类文件中放在给定的单一包中 -->
214+
215+
216+
<!--平行包结构(重构包层次),所有混淆的代码放在 pg 包下 -->
217+
<!-- 最好不要随便放, 若有多个项目混淆,不同jar的混淆类可能重名 -->
218+
<!-- 建议为{project.root.package}.pg (不存在此变量,此处仅为了说明) -->
219+
<option>-repackageclasses exp.libs.pojo.pg</option>
220+
221+
<!-- 保留[源码] --><!-- 按实际项目切换 -->
222+
<!-- option>-keepattributes SourceFile</option -->
223+
224+
<!-- 保留[行号] --><!-- 按实际项目切换 -->
225+
<option>-keepattributes LineNumberTable</option>
226+
227+
<!-- 保留[注释] --><!-- 按实际项目切换 -->
228+
<!-- option>-keepattributes *Annotation*</option -->
229+
230+
<!-- 保留[注解] --><!-- 按实际项目切换 -->
231+
<!-- option>-keepattributes Signature</option -->
232+
233+
<!-- 保持[入口类]不变 -->
234+
<!-- 按实际项目修正 -->
235+
<option>-keep class
236+
exp.libs.pojo.Version,
237+
exp.libs.pojo.Main
238+
</option>
239+
240+
<!-- 保持[Bean类]不变(若框架对 Bean中的内容做了反射处理,则必须保持不变) -->
241+
<!-- 按实际项目修正 -->
242+
<option>-keep class exp.libs.pojo.bean.** { *;}</option>
243+
244+
<!-- 保持[所有入口方法]不变 -->
245+
<!-- 固定不变 -->
246+
<option>-keepclasseswithmembers public class * {
247+
public static void main(java.lang.String[]);
248+
}
249+
</option>
250+
251+
<!-- 保持[对外API的类名和方法名]不变 -->
252+
<!-- 按实际项目修正 -->
253+
<option>-keep class exp.libs.pojo.api.** { *;}</option>
254+
255+
<!-- 保持[所有本地化方法]不变 -->
256+
<!-- 固定不变 -->
257+
<option>-keepclasseswithmembernames class * {
258+
native &lt;methods&gt;;
259+
}
260+
</option>
261+
262+
<!-- 保持[所有类成员变量]不变 -->
263+
<!-- 按实际项目修正 -->
264+
<!-- option>-keepclassmembers class * {
265+
&lt;fields&gt;;
266+
}
267+
</option -->
268+
269+
<!-- 保持[所有枚举类必须的方法]不变 -->
270+
<!-- 固定不变 -->
271+
<option>-keepclassmembers class * extends java.lang.Enum {
272+
public static **[] values();
273+
public static ** valueOf(java.lang.String);
274+
}
275+
</option>
276+
277+
<!-- 保持[所有序列化接口]不变(若项目中不使用序列化,也可注释) -->
278+
<!-- 固定不变 -->
279+
<option>-keepclassmembers class * implements java.io.Serializable {
280+
static final long serialVersionUID;
281+
static final java.io.ObjectStreamField[] serialPersistentFields;
282+
private void writeObject(java.io.ObjectOutputStream);
283+
private void readObject(java.io.ObjectInputStream);
284+
java.lang.Object writeReplace();
285+
java.lang.Object readResolve();
286+
}
287+
</option>
288+
</options>
289+
</configuration>
290+
</plugin>
291+
292+
<!-- Ant插件:项目部署文件复制 -->
293+
<plugin>
294+
<groupId>org.apache.maven.plugins</groupId>
295+
<artifactId>maven-antrun-plugin</artifactId>
296+
<version>1.7</version>
297+
<executions>
298+
<execution>
299+
<id>ant-build</id>
300+
<phase>install</phase>
301+
<goals>
302+
<goal>run</goal>
303+
</goals>
304+
<configuration>
305+
<target>
306+
<echo>拷贝数据库脚本</echo>
307+
<copy todir="${release.dir}/script">
308+
<fileset dir="script"></fileset>
309+
</copy>
310+
<echo>拷贝项目配置文件</echo>
311+
<copy todir="${release.dir}/conf">
312+
<fileset dir="conf" />
313+
</copy>
314+
<echo>拷贝文档</echo>
315+
<copy todir="${release.dir}/doc/04_维护文档">
316+
<fileset dir="doc/04_维护文档" />
317+
</copy>
318+
<copy todir="${release.dir}/doc/06_使用文档">
319+
<fileset dir="doc/06_使用文档" />
320+
</copy>
321+
<copy todir="${release.dir}/doc/07_演示文档">
322+
<fileset dir="doc/07_演示文档" />
323+
</copy>
324+
</target>
325+
</configuration>
326+
</execution>
327+
</executions>
328+
</plugin>
329+
330+
<!-- 项目发布插件(自动生成脚本) -->
331+
<plugin>
332+
<groupId>exp.libs</groupId>
333+
<artifactId>mojo-release-plugin</artifactId>
334+
<version>${mrp.plugin.version}</version>
335+
<executions>
336+
<execution>
337+
<id>mrp</id>
338+
<phase>install</phase>
339+
<goals>
340+
<goal>install</goal>
341+
</goals>
342+
<configuration>
343+
<mavenRepository>D:\mavenRepository</mavenRepository>
344+
<verClass>exp.libs.pojo.Version</verClass>
345+
<mainClass>exp.libs.pojo.Main</mainClass>
346+
<mainArgs></mainArgs>
347+
<charset>UTF-8</charset>
348+
<jdkPath>java</jdkPath>
349+
<xms>32m</xms>
350+
<xmx>64m</xmx>
351+
<jdkParams></jdkParams>
352+
<noVerJarRegex>exp-?libs-.*</noVerJarRegex> <!-- 不使用版本号的依赖构件(正则式) -->
353+
<proguard>false</proguard> <!-- 是否使用混淆包(需配置混淆打包插件) -->
354+
</configuration>
355+
</execution>
356+
</executions>
357+
</plugin>
358+
359+
<!-- 打包源码: 项目发布基线版本时会自动打包源码,不要启用此插件,否则会失败 -->
360+
<!-- plugin>
361+
<groupId>org.apache.maven.plugins</groupId>
362+
<artifactId>maven-source-plugin</artifactId>
363+
<version>2.1.2</version>
364+
<executions>
365+
<execution>
366+
<id>attach-sources</id>
367+
<phase>verify</phase>
368+
<goals>
369+
<goal>jar-no-fork</goal>
370+
<goal>test-jar-no-fork</goal>
371+
</goals>
372+
</execution>
373+
</executions>
374+
</plugin -->
375+
376+
<!-- 打包javadoc: 项目发布基线版本时会自动打包javadoc,若报错不要启用此插件 -->
377+
<!-- javadoc插件会强制使用GBK读取pom文件的内容, 若得到的html网页标题乱码, -->
378+
<!-- 则需要通过Run Configurations -> 自定义Maven install命令 -> Common -> Encoding:GBK 确保不会乱码 -->
379+
<plugin>
380+
<groupId>org.apache.maven.plugins</groupId>
381+
<artifactId>maven-javadoc-plugin</artifactId>
382+
<version>2.9.1</version>
383+
<configuration>
384+
<aggregate>true</aggregate>
385+
<charset>UTF-8</charset>
386+
<encoding>UTF-8</encoding>
387+
<docencoding>UTF-8</docencoding>
388+
</configuration>
389+
<executions>
390+
<execution>
391+
<id>attach-javadocs</id>
392+
<goals>
393+
<goal>jar</goal>
394+
</goals>
395+
</execution>
396+
</executions>
397+
</plugin>
398+
399+
</plugins>
400+
</build>
401+
402+
<!-- 项目发布管理 -->
403+
<distributionManagement>
404+
405+
<!-- 私服地址 ,基线仓库 -->
406+
<repository>
407+
<id>Releases</id>
408+
<url>http://127.0.0.1:8081/nexus/content/repositories/releases</url>
409+
</repository>
410+
411+
<!-- 私服地址 ,快照仓库 -->
412+
<snapshotRepository>
413+
<id>Snapshots</id>
414+
<url>http://127.0.0.1:8081/nexus/content/repositories/snapshots</url>
415+
</snapshotRepository>
416+
</distributionManagement>
417+
</project>
418+
419+
```
55420

56421
## 版权声明
57422

0 commit comments

Comments
 (0)