= ''' Maven使用(以新游戏大厅为例) ''' = 命名:[[BR]] {{{ cn.pconline.项目组 项目名称 版本 }}} ---- 添加依赖:[[BR]] 所谓依赖就是开始时候所需要的包[[BR]] {{{ org.springframework spring-web 3.0.6.RELEASE }}} ---- 添加中心库: 所谓中心库就是包存放的地方或者是代理的地方 {{{ gamehall Repository hosting the gamehall http://192.168.75.11:8080/nexus-webapp-1.9.2.3/content/groups/public true never warn false default }}} ---- 添加依赖包时,只需要添加你所需要的那个依赖包就可以了,这个依赖包的相关依赖可以不用加,maven默认会自动帮我们加好 ---- 添加自己依赖包时,可以上传到本地仓库,也可以上传到nexus,下面是一个例子 {{{ mvn install:install-file -Dfile=fckeditor-java-core-2.6.jar -DgroupId=fckeditor-java-core -DartifactId=fckeditor-core -Dversion=2.6 -Dpackaging=jar -DgeneratePom=true }}} 当然nexus提供界面操作上传 ---- 公司内部需要走代理访问外部的,所以在设置的时候也要加上代理 修改setting.xml文件 {{{ pconline true http 192.168.11.254 8080 }}} ---- 当然一些模块化的结构管理,不同开发环境的设置和插件的使用等等都可以参考Maven的官方网站[http://maven.apache.org/] === '''pom文件''' === Maven基本所有工作都是对pom.xml文件来进行操作的 ---- {{{ false always warn true never fail codehausSnapshots Codehaus Snapshots http://snapshots.maven.codehaus.org/maven2 default }}} - enabled表示这两个版本是否可用,snapshots是快照版,开发过程中经常使用。releases是发布版,部署上线的时候用 - updatePolicy 提示这个仓库的依赖包是否有更新的 - checksumPolicy 校验需要 - url是远程库的地址 在游戏大厅2里面使用nexus来代理,作为公司内部使用的仓库中心。 ---- {{{ }}} - distributionManagement部署管理 - downloadUrl提供别人下载你项目的url - repository项目部署的地方 - site项目文文档部署的地方(游戏大厅使用这样来部署文档的,采用ftp方式上传) 这样就很好的控制项目的部署,当然有很多种方式可以处理这样的问题,可以写一个插件处理,也可以结合hudson使用脚本处理(游戏大厅暂时使用这种方式来处理)。 ---- {{{ ${basedir}/src/main/java ${basedir}/src/main/scripts ${basedir}/src/test/java ${basedir}/target/classes ${basedir}/target/test-classes ... }}} 观察这些都是输出路径,但是一般我们会按照maven的规范来做。 ---- {{{ 2.5.6 }}} - 对于一些像spring的多个包的,我们需要保存版本一致,可以加上properties {{{ org.springframework spring-web ${spring.version} }}} - 依赖版本可以写属性读取的方式 ---- 把spring抽离出来,单独作为一个项目来处理,写一个新的pom {{{ 4.0.0 cn.pconline.commons spring-dependencies-module pom 2.5.6 ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-aop ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-tx ${spring.version} org.springframework spring-core ${spring.version} }}} 运行mvn install 弄好到本地,或者上传到私服 {{{ 2.5.6 ...... cn.pconline.commons spring-dependencies-module pom ${springversion} ........ }}} 引入到项目里面就可以了,同样可以使用在不同应用之间的一些client包的调用 ---- === '''游戏大厅Maven使用总结''' === - 在游戏大厅项目中,我们更多的是使用Maven来进行项目的构建。 - 我们按照Maven的规范来进行项目开发,很方便地就可以构建了,只需要添加项目中使用到的一些依赖包就可以了。 - 搭建了nexus,项目构建速度也提高了很多。公司内部一些jar包也放到nexus里管理,svn就只存在代码了,可以省不少空间。 - 为Hudson持续集成提供了构建功能,Ant也可以构建,但是没有规范和依赖包的管理。 - 生成项目报告和测试报告,maven里面sonar这个插件可以输出更多的报告(项目存在的问题,风格规范,代码耦合问题,复杂度问题,测试报告问题) - Maven在服务器安装的时候需要依赖jdk,一般设置JAVA_HOME就可以了。 - 结合eclipse开发时,好像少了自动生成功能,每次写完java类和jsp时都需要mvn package一下,才能通过resin访问修改后的内容,netbeans的话会好一点,只是java类需要package。 - 使用eclipse可能会出现,jdk 1.4 版本以上的问题,这里就需要设置eclipse.ini来解决。设置jdk的路径 === '''使用中的一些优点''' === - maven当多个项目在一起工作的时候是比较有用的,只要把项目上传了,就可以提供给别的项目进行依赖。也不用手动地替换jar包,只需要在项目pom文件里面进行修改版本号就可以了