java -version
mvn -v
mvn help:system

m2eclipse maven->install

MAVEN_OPTS: -Xms128m -Xmx512m
mvn clean compile
mvn clean test ----> default:clean default:resources, default:compile,default:testResources,default:testCompile
mvn clean package (packaging类型) ---->default-jar
mvn clean install ----> default-install

mvn archetype:generate

解析依赖
mvn dependency:list
依赖树
mvn dependency:tree
分析直接依赖(complie,test,检测不到运行时jar)
mvn dependency:analyze

${project.artifactId}-${project.version}
<finalName>account</finalName>
坐标 :arififactId-version[-classifier].packaging
groupId
artifactId
version
packaging
classifier 不能直接定义项目,附属构件是右插件生成

jar仲裁链路,越短越优先;如果链路长度一样,排前面的优先
optional不会传递(一般不使用,用于实现多种特性的适配)

mvn jetty:run -Djetty.port=9999
mvn cargo:start
mvn cargo:redeploy

强制mvn检查更新 mvn clean install-U

三套生命周期 clean default site
pre-clean clean post-clean

default validate initialize generate-source process-sources generate-resources process-resources compile process-classes generate-test-sources process-test-sources process-test-sources generate-test-resources process-test-resources test-compile process-test-classes test prepare-package
package pre-integration-test integration-test post-integration-test verify install deploy

pre-site site post-site site-deploy
阶段与命令
mvn clean
mvn test
mvn clean install
mvn clean deploy site-deploy
插件目标:
dependency:analyze dependency:tree dependency:list
compile:compiler surefire:test
生命周期是和插件绑定
打包类型jar, war, pom, maven-plugin, ear

配置-Dkey=value
mvn install-Dmaven.test.skip=true
插件主要来源:apache和codehaus
查看帮助
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-plugin:2.1
mvn help:describe -Dplugin=compiler
mvn help:describe -Dplugin=compiler -Dgoal=compile

maven3 插件是寻找release,而不是lastest
仓库 mirrorOf 匹配
测试代码配置
测试代码位于src/test/java/
测试资源位于src/test/resources/
默认输出目录为target/test-classes
persist.file=${project.build.testOutputDirectory}/persist-data.xml

打包pom级别的modules构建
聚合模块(可以是
父子目录
<modules>
<module>account-email</module>
<module>account-persist</module>
</modules>
平行目录
<modules>
<module>../account-email</module>
<module>../account-persist</module>
</modules>)
pom之间的继承
account-parent的pom
<parent>
<relativePath>../account-parent/pom.xml</relativePath> 默认是../pom.xml
<parent>

其中还支持scope import导入配置
约定优于编码,继承超级pom.xml
编译reactor 裁剪反应堆
-am 由叶寻根构建 -amd 由根寻叶构建 -pl 构建指定模块 -rf 由指定模块开始
mvn clean install -pl account-parent -amd -rf account-email

Nexus 搭建私服 proxy setting的profile 手动上传jar
跳过测试
mvn pachage -DskipTests 跳过测试运行
mvn pachage -Dmaven.test.skip=true 跳过测试编译和运行
也可以修改surefire的skipTests测试
指定测试
mvn test -Dtest=RandomGeneratorTest
mvn test -Dtest=Test1,Test2
mvn test -Dtest=Random*Test,Test2 前后缀匹配
mvn test -Dtest -DfailIfNotTests=false 也是一种跳过

代码目录下 mvn cobertura:cobertura 可生成测试覆盖率报告
TestNG @Test{group = {"util","medium"}} 支持分组的概念

Hudson持续集成
持续编译,持续数据库集成,持续测试,持续审查,持续部署,持续反馈
email send 负责人收到错误报告,PM收到所有报告
java -jar hudson.war --httpPort=8082
流行的代码管理系统svnserve mac和linux已经集成
git流行的gitlab
mkdir svn-repos
svnadmin create svn-repos\account 创建 维护 监测
svn import -m "initial import" . file://///
启动服务 svnserve -d -r svn-repos - - listen -host 0.0.0.0 强制绑定ipv4
svn list svn://192..../account/trunk
HUDSON_HOME目录会消耗大量磁盘

web模块的pom 用<finalName>account</finalName>
打包出来就像account.war

mvn jetty:run
cargo 实现自动化部署,configuration配置c:/tomcat和目标目录tomcat6x
mvn cargo:start 就好将c:/tomcat拷贝到tomcat6x子目录
mvn release:prepare -DautoVersionSubmodules=true
mvn release:perform 会包括jar source-jar doc-jar 部署
mvn clean install -DperformRelease=true

GnuPG 是PGP标准的一个免费实现
设置发布的时候才需要,不然耗时
mvn clean deplou -Dgpg.passphrase=yourpass
资源过滤相当于autoconfig
针对开发环境dev, test环境
<profiles>
<profile>
<id>dev</id>
<properties>
<db.driver>com.mysql.jdbc.Driver<db.diver>
<db.url>...
</profiles>
开启resource的过滤,不同目录不同类型
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>${project.basedir}/src/main/sql</directory>
<filtering>false</filtering>
</resource>
</resources>
<TestResources>
<TestResource>
<directory>${project.basedir}/src/test/resources</directory>
<filtering>true</filtering>
</TestResource>
</TestResources>

命令:mvn clean install -Pdev
mvn clean install -Dtest=x
webapp的过来,如不同的logo,不同的theme
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>..
<configuration>
<webResources>
<resource>
<filtering>true
<directory>src/main/webapp
<includes>
<include>**/*.css<
<include>**/*.js<
</plugin>
单元测试成本低,集成测试成本高
TestNG 中的@Test(group={"unit"})标示为单元,@Test(group={"integration"})
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration
<groups>unit</groups> <!--测试组 -->
<testNGArtifactName>test.testng</testNGArtifactName> <!-- testng 指定
<argLine>-javaagent:"${settings.localRepository}/test.jmockit/0.999.10/test.jmockit-0.999.10.jar"</argLine> <!-- 启动jvm
<useSystemClassLoader>true</useSystemClassLoader>
<testFailureIgnore>true</testFailureIgnore>
<parallel>false</parallel>
<forkMode>once</forkMode> <!--单进程回归所有测试

<!--
junit4.7+ surefire2.6
<forkMode>always</forkMode>
<parallel>methods</parallel>
<threadCount>4</threadCount>
-->
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>full</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5<version>
<configuration>
<groups>unit,integration</groups>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<project>

集成的时候可以配置15一次unit,一天两次full
testng.xml
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="plan-project-test">
<test name="plan-project-test">
<packages>
<package name="com.alibaba.lp.permission.dal.cache.test" />
<package name="com.alibaba.lp.permission.dal.impl.test" />
</packages>
</test>
</suite>

项目报告插件
一般插件<project><build><plugins>...
报告插件<project><reporting><plugins>...
JavaDoc <groupId>org.apache.maven.plugins ..
<artifactId>maven-javadoc-plugin ..
<version>2.7
源码在线
<groupId>org.apache.maven.plugins ..
<artifactId>maven-jxr-plugin ..
<version>2.2
<configuration
<aggregate>true
</configuration>
编码规范
<groupId>org.apache.maven.plugins ..
<artifactId>maven-chechstyle-plugin ..
<version>2.5
<configuration
<configLocation>config/maven_checks.xml
</configuration>
PMD
<groupId>org.apache.maven.plugins ..
<artifactId>maven-pmd-plugin ..
<version>2.5
<configuration
<rulesets <!-- 配置其他规则
<ruleset>rulesets/braces.xml
<ruleset>rulesets/strings.xml
</configuration>
ChangeLog
<groupId>org.apache.maven.plugins ..
<artifactId>maven-changelog-plugin ..
<version>2.2
<configuration
<type>range
<range>60
</configuration>
测试覆盖
<groupId>org.codehaus.mojo
<artifactId>cobertura-maven-plugin ..
<version>2.2
自定义站点外观
http://maven.apache.org/xsd/decoration-1.0.0.xsd
资源位于src/site/resources
站点皮肤site.xml com.googlecode.fluido-skin

站点远程部署 支持scp(setting.xml 配置passphrase和privateKey), ftp (wagon-ftp),dav:

maven插件本身也是maven项目,packaging必须是maven-plugin

mvn archetype:generate \
-DgroupId=org.sonatype.mavenbook \
-DartifactId=quickstart \
-Dversion=1.0-SNAPSHOT \
-DpackageName=org.sonatype.mavenbook \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=1.0 \
-DinteractiveMode=false

1 限定只使用内置的archetypes
mvn archetype:generate -DarchetypeCatalog=internal
2 使用Filter
mvn archetype:generate -Dfilter=maven-archetype-plugin

mojo的注解采用java1.4风格 继承AbstractMojo 实现execute 提供@goal标注
maven-invoker-plugin key支持插件的自动化集成测试

编写Archetype 默认打包类型jar,编写自己的胶水架
pom.xml
src/main/resources/archetype-resources/pom.xml
src/main/resources/META-INF/maven/archetype-metadata.xml
src/main/resources/archetype-resources/**

《Maven实战》阅读笔记的更多相关文章

  1. 阅读《RobHess的SIFT源码分析:综述》笔记

    今天总算是机缘巧合的找到了照样一篇纲要性质的文章. 如是能早一些找到就好了.不过“在你认为为时已晚的时候,其实还为时未晚”倒是也能聊以自慰,不过不能经常这样迷惑自己,毕竟我需要开始跑了! 就照着这个大 ...

  2. RobHess的SIFT源码分析:imgfeatures.h和imgfeatures.c文件

    SIFT源码分析系列文章的索引在这里:RobHess的SIFT源码分析:综述 imgfeatures.h中有SIFT特征点结构struct feature的定义,除此之外还有一些特征点的导入导出以及特 ...

  3. RobHess的SIFT源码分析:综述

    最初的目的是想做全景图像拼接,一开始找了OpenCV中自带的全景拼接的样例,用的是Stitcher类,可以很方便的实现全景拼接,而且效果很好,但是不利于做深入研究. 使用OpenCV中自带的Stitc ...

  4. 阅读《RobHess的SIFT源码分析:综述》笔记2

    今天开始磕代码部分. part1: 1. sift特征提取. img1_Feat = cvCloneImage(img1);//复制图1,深拷贝,用来画特征点 img2_Feat = cvCloneI ...

  5. element-ui button组件 radio组件源码分析整理笔记(一)

    Button组件 button.vue <template> <button class="el-button" @click="handleClick ...

  6. element-ui 组件源码分析整理笔记目录

    element-ui button组件 radio组件源码分析整理笔记(一) element-ui switch组件源码分析整理笔记(二) element-ui inputNumber.Card .B ...

  7. element-ui Carousel 走马灯源码分析整理笔记(十一)

    Carousel 走马灯源码分析整理笔记,这篇写的不详细,后面有空补充 main.vue <template> <!--走马灯的最外层包裹div--> <div clas ...

  8. STL源码分析读书笔记--第二章--空间配置器(allocator)

    声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...

  9. element-ui MessageBox组件源码分析整理笔记(十二)

    MessageBox组件源码,有添加部分注释 main.vue <template> <transition name="msgbox-fade"> < ...

  10. element-ui switch组件源码分析整理笔记(二)

    源码如下: <template> <div class="el-switch" :class="{ 'is-disabled': switchDisab ...

随机推荐

  1. SpringMVC、Struts1、Struts2和SSH2框架中单例与多例的解析

    struts1是单例提供服务,请求数据绑定在actionform里,form当做参数传入调用方法,不用实例变量就不会出现并发问题. spring mvc的contrller也是这样的模式 struts ...

  2. QQ空间分享功能(二)

    http://sns.z.qq.com/tools/share/demo_html.jsp  手机QQ空间分享功能接入指引: 1.请求地址: http://sns.z.qq.com/share 2.请 ...

  3. [转] - SendMessage、PostMessage原理

    SendMessage.PostMessage原理 本文讲解SendMessage.PostMessage两个函数的实现原理,分为三个步骤进行讲解,分别适合初级.中级.高级程序员进行理解,三个步骤分别 ...

  4. C# - 杨涛分页控件AspNetPager

    http://www.webdiyer.com/downloads/ 前台 <%@ Page Language="C#" AutoEventWireup="true ...

  5. 6. Configure Compute services

    Controller Node: 1. sudo apt-get install nova-api nova-cert nova-conductor nova-consoleauth nova-nov ...

  6. POJ 1419 Graph Coloring(最大独立集/补图的最大团)

    Graph Coloring Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4893   Accepted: 2271   ...

  7. MySQL 创建用户 与 授权

    例,需要给 121.52.215.100 连接添加一个用户 dee,密码是 123456,他只能对数据库 vshop 有 select 权限: CREATE USER '; GRANT SELECT ...

  8. PHP 面试题数组篇[ 整理中 ]

    网上找的PHP数组题,准备自己做一遍并且记录下来.不断添加中. 1.写函数创建长度为10的数组,数组中的元素为递增的奇数,首项为1. <?php function arrsort($first, ...

  9. XML解析器(转)

    常见C/C++ XML解析器有tinyxml.XERCES.squashxml.xmlite.pugxml.libxml等等,这些解析器有些是支持多语言的,有些只是单纯C/C++的.如果你是第一次接触 ...

  10. MVC validation

    <div class="editor-field"> @Html.TextBoxFor(m => m.DateField) @Html.ValidationMes ...