项目开发实践No.1 Maven + Sonar 孙晓晨 2010.10
项目开发实践No.1Maven + Sonar
孙晓晨 2010.10
主题
•Maven构建实践
•Sonar介绍
Maven构建实践
快速回顾
生命周期 坐标
依赖管理 仓库
插件
快速回顾
Site
default(build)
clean
pre-clean
clean
post-cleanpre-site
site
post-site
site-deploy
生命周期
快速回顾validate
generate-sources
process-sources
generate-resources
process-resources
compile
process-classes
generate-test-sources
process-test-sources
generate-test-
resources
process-test-resources
test-compile
testprepare-package
package
pre-integration-
test
integration-test
post-integration-
test
verify install deploy
default(build)
快速回顾
groupId
artifactId
versionPackaging
classifier
快速回顾
坐标
快速回顾-坐标
定义:
使用:groupId:artifactId:packaging[:classifier]:version
例如:mvn archetype:generate
mvn org.apache.maven.plugins:maven-archetype-plugin:2.0:generate
快速回顾
依赖管理 仓库
http://mvn.3.com
快速回顾
插件jetty-maven-plugin
cargo-maven2-plugin
maven-release-plugin
maven-archetype-plugin
maven-assembly-plugin
maven-archetype-plugin
maven-archetype-plugin
• 特性:• IDE深度整合
• 江湖大佬(appfuse、gae、liftweb 、camel、cxf、mule)使用示范
• 简单易用
• 当前可用的数量为363+
从模版原型中创建Maven项目
maven-archetype-plugin
maven-archetype-plugin
mvn archetype:create-from-project
goto target/generated-sources/archetype
mvn install
mvn archetype:generate -DarchetypeCatalog=local
maven-archetype-plugin
演示
maven-archetype-plugin
技术要点:• mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.0
-DgroupId=com.woniu.demo -DartifactId=demo-maven -Dversion=1.0.0-SNAPSHOT -Dpackage=com.woniu.demo –B
• 创建Archetype
maven-archetype-plugin
技术要点:• archetype-catalog.xml
• local - ~/.m2/archetype-catalog.xml
• remote - http://repo1.maven.org/maven2/archetype-catalog.xml
• 本地更新 - archetype:crawl
• nexus更新 – nexus-archetype-plugin
• bug –读写本地文件路径不一致
Maven-assembly-plugin
Maven-assembly-plugin
• 用于创建自定义的分发包
• assembly:assembly - 直接调用
• single - 绑定到生命周期
• 使用描述文件定义
maven-assembly-plugin
演示
Sonar
sonar
• 是什么?
• 可以做哪些事情?
• 项目如何使用?
sonar
Maven生态圈:
Maven
Hudson
Sonarplugins
sonar
项目构建流程:1. Maven创建新项目骨架
2. 迭代开发+测试
3. 按功能每天提交代码
4. Hudson持续集成自动发布snapshot版本、Sonar持续检查
5. PM按功能发布测试版本
6. 测试人员验收功能,并通过sonar查看项目质
量,符合标准PM向nexus库发布release版本
谢谢