Maven – 项目管理利器

1,942 views
1,747 views

Published on

Maven – 项目管理利器

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,942
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
32
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Maven – 项目管理利器

  1. 1. Maven – 项目管理利器
  2. 2. Comparation … <property name=&quot;src&quot; location=&quot;src/main/java&quot;/> <property name=&quot;build&quot; location=&quot;target/classes&quot;/> <target name=&quot;compile&quot; depends=&quot;init&quot; description=&quot;compile the source &quot; > <javac srcdir=&quot;${src}&quot; destdir=&quot;${build}&quot;/> </target> … <project> <modelVersion>4.0.0</modelVersion> <groupId>com.kaiqi</groupId> <artifactId>wap</artifactId> <version>1.0</version> </project>
  3. 3. … What is it ? <ul><li>Maven 是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model - pom.xml) ,一组标准集合,一个项目生命周期 (Project Lifecycle) ,一个依赖管理系统 (Dependency Management System) ,和用来运行定义在生命周期阶段 (phase) 中插件 (plugin) 目标 (goal) 的逻辑。 </li></ul>
  4. 4. Maven Features <ul><li>依赖管理 ( Dependcy Management ) </li></ul><ul><ul><li>清晰的依赖关系管理 </li></ul></ul><ul><ul><li>最大程度的实现代码重用 </li></ul></ul><ul><li>约定优先于配置 ( Convention Over Configuration ) </li></ul><ul><li>丰富插件资源 ( plugins ) </li></ul>
  5. 5. Summary Of Tools <ul><li>Builds </li></ul><ul><li>Documentation </li></ul><ul><li>Reporting </li></ul><ul><li>Dependencies </li></ul><ul><li>SCMs </li></ul><ul><li>Releases </li></ul><ul><li>Distribution </li></ul><ul><li>…… </li></ul>
  6. 6. POM – Project Of Model <ul><li><project > </li></ul><ul><li><modelVersion>4.0.0</modelVersion> </li></ul><ul><li><groupId>com.kaiqi</groupId> </li></ul><ul><li><artifactId>wap</artifactId> </li></ul><ul><li><packaging>jar</packaging> </li></ul><ul><li><version>1.0‐SNAPSHOT</version> </li></ul><ul><li><name>simple</name> </li></ul><ul><li><url>http://maven.apache.org</url> </li></ul><ul><li><dependencies> </li></ul><ul><li><dependency> </li></ul><ul><li><groupId>junit</groupId> </li></ul><ul><li><artifactId>junit</artifactId> </li></ul><ul><li><version>3.8.1</version> </li></ul><ul><li><scope>test</scope> </li></ul><ul><li></dependency> </li></ul><ul><li></dependencies> </li></ul><ul><li></project> </li></ul>
  7. 7. Maven Plugins and Goals <ul><li>mvn archetype:create -DgroupId=com.kaiqi - DarticleId=example </li></ul><ul><li>插件( Plugin ) archetype </li></ul><ul><li>目标 ( Goals ) create </li></ul>
  8. 8. Maven Lifecycle Mvn package mvn resources:resources compiler:compile resources:testResources compiler:testCompile surefire:test jar:jar
  9. 9. Maven Coordinates <ul><li><project > </li></ul><ul><li><modelVersion>4.0.0</modelVersion> </li></ul><ul><li><groupId>com.kaiqi</groupId> </li></ul><ul><li><artifactId>wap</artifactId> </li></ul><ul><li><packaging>jar</packaging> </li></ul><ul><li><version>1.0‐SNAPSHOT</version> </li></ul><ul><li><name>simple</name> </li></ul><ul><li><url>http://maven.apache.org</url> </li></ul><ul><li><dependencies> </li></ul><ul><li><dependency> </li></ul><ul><li><groupId>junit</groupId> </li></ul><ul><li><artifactId>junit</artifactId> </li></ul><ul><li><version>3.8.1</version> </li></ul><ul><li><scope>test</scope> </li></ul><ul><li></dependency> </li></ul><ul><li></dependencies> </li></ul><ul><li></project> </li></ul>坐标
  10. 10. Maven Repositories <ul><li>本地仓库 ( Local repository ) </li></ul><ul><ul><li>setting.xml 可配置路径 </li></ul></ul><ul><ul><li>Maven install 可安装本地仓库 </li></ul></ul><ul><li>远程仓库 ( Remote repository) </li></ul><ul><ul><li>Maven deploy </li></ul></ul><ul><ul><li>Maven release : perform </li></ul></ul>
  11. 11. Maven Dependency Management <ul><li>通过坐标依赖 </li></ul><ul><li>依赖具有传递性 </li></ul>[INFO] com.kaiqi:wap-game:war:1.1-SNAPSHOT [INFO] +- com.kaiqi:wap-service:jar:1.1-SNAPSHOT:compile [INFO] | +- com.kaiqi:wap-dao:jar:1.1-SNAPSHOT:compile [INFO] | | +- org.hibernate:hibernate-validator:jar:3.1.0.GA:compile [INFO] | | | +- org.hibernate:hibernate-core:jar:3.3.0.SP1:compile [INFO] | | | | +- antlr:antlr:jar:2.7.6:compile [INFO] | | | | - javax.transaction:jta:jar:1.1:compile [INFO] | | | - org.hibernate:hibernate-commons-annotations:jar:3.1.0.GA:compile [INFO] | | +- org.slf4j:slf4j-log4j12:jar:1.5.8:compile [INFO] | | +- org.slf4j:slf4j-api:jar:1.5.8:compile [INFO] | | +- javax.persistence:persistence-api:jar:1.0:compile [INFO] | | - org.apache.ibatis:ibatis-sqlmap:jar:2.3.4.726:compile
  12. 12. Version Management Tag 1.0 2.0 branch 1.0.1 Trunk 1.0.1 branch 1.0.2 1.0.2 Maven 版本规则 < 主版本 >.< 次版本 >.< 增量版本 >
  13. 13. Why using SNAPSHOT? TMD ,用的不是我最新代码,当然不行。 靠,你的程序编译不过去啊! Fighting Before Now 每次代码更新都 mvn deploy 。 现在用的快照版本,肯定是最新代码。
  14. 14. SCMs with Maven <ul><li>从 1.0-SNAPSHOT 到 1.1-SNAPSHOT </li></ul><ul><li>pom.xml 里添加 svn 地址 </li></ul><ul><li>Mvn release:prepare </li></ul><ul><ul><li>将 snapshot1.0 升级为正式版 1.0 </li></ul></ul><ul><ul><li>正式版 1.0 提交到 svn ,打 tag1.0 </li></ul></ul><ul><ul><li>生成 snapshot1.1 开发版本 </li></ul></ul><ul><ul><li>开发版本 snapshot1.1 提交到 trunk 中 </li></ul></ul><ul><li>Mvn relese:perform </li></ul><ul><ul><li>从 tag1.0 中 check 出代码 </li></ul></ul><ul><ul><li>打包发布到远程仓库中 </li></ul></ul><scm> <connection>scm:svn:http:// svn.kaiqi.com /svn/wap/trunk/</connection> <developerConnection>scm:svn:https://svn.kaiqi.com/svn/wap/trunk/</developerConnection> </scm>
  15. 15. Make a branch with Maven <ul><li>mvn release:branch -DbranchName=1.1.x -DupdateBranchVersions=true -DupdateWorkingCopyVersions=false </li></ul><ul><ul><li>1.0-SNAPSHOP 升级成 1.0.1-SNAPSHOT </li></ul></ul><ul><ul><li>开发版本 1.0.1-SNAPSHOT 提交到 Branches 中 </li></ul></ul>
  16. 16. KaiQi-WAP Tech Team <ul><li>项目模块化,减少重复劳动 </li></ul><ul><li>做好版本控制,每次 release 记录版本变化 </li></ul><ul><li>充分利用分支,避免旧版本有 bug 无法修复 </li></ul><ul><li>全程自动化,减少人为错误操作 </li></ul><ul><li>确保数据一致性,提高服务质量 </li></ul>
  17. 17. Just Do It! <ul><li>创建工程 </li></ul><ul><li>打包 </li></ul><ul><li>Install </li></ul><ul><li>Deploy </li></ul><ul><li>Release </li></ul><ul><li>Branch </li></ul>
  18. 18. <ul><li>Q&A </li></ul>

×