1、Maven+Sonar+Nexus管理工具管理工具课件课件什么是Maven?Maven 是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(ProjectLifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven 的时候,你用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。什么是Sonar?Sonar是一
2、个Java代码质量管理平台,提供了对代码行、注释行、代码覆盖率、复杂度、代码规则、违例、项目视图等内容的统计和图形化报表显示功能。Sonar还提供了测算和违例的钻取、项目不同版本间指标差异的图形化比较、代码覆盖率云的形象化描述等。同时Sonar也提供了灵活的配置功能,包括对系统的配置和对规则的配置。什么是Nexus?Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节 省带宽和时间,Nexus就可以满足这样的需要。此外,
3、他还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的 REST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。为什么要搭建MSN?MSN为(Maven+Sonar+Nexus)的简称。为了统一管理项目,Maven来构建项目,并设置项目的依赖包,Nexus可以作为Maven的私服存在,去SMaven中央仓库中下载依赖包,Sonar是一个质量管理平台,通过Maven将工程deploy到Sonar管理平台,来检查代码的质量。依赖包怎么被注入的?当使用Maven建立一个工程的时候,在项目的根目录下面会生成一个p
4、om.xml,这个文件里面有着对项目的定义,和项目所依赖的库,如果Maven设置了Nexus作为它本身的私服的话,就会通过pom.xml中的定义映射到Nexus上,Nexus就会从public组的Maven中央仓库中找到项目的依赖库,并会自动找到项目依赖库的依赖库,一起下载到本地库中。Maven的安装:你可以从Apache Maven 项目的web 站点下载Maven:http:/maven.apache.org/download.html环境变量的配置:M2_HOME=c:Program Filesmaven-2.0.9PATH=%PATH%;%M2_HOME%bin命令行:输入mvn ve
5、rsion查看版本Maven的使用:/.m2/settings.xml该文件包含了用户相关的认证,仓库和其它信息的配置,用来自定义Maven 的行为。/.m2/repository/该目录是你本地的仓库。当你从远程Maven 仓库下载依赖的时候,Maven 在你本地仓库存储了这个依赖的一个副本。建立一个普通的Web项目:mvn archetype:create-DgroupId=com.simlink-DartifactId=myproject-DarchetypeArtifactId=maven-archetype-webappMaven的一些常用命令:命令行状态下进入项目根目录,动行mvn
6、 compile,默认的编译类输出路径位于 target/classes。编译测试源代码和执行单元测试:mvn test该命令执行动作,下载测试插件,编译源代码,执行测试;mvn test-compile执行测试类的规则。打包和安装到你的本地库:mvn package 打jar包,mvn install安装jar包,在构建之前清理target目录,mvn clean,生成IntelliJ IDEA描述,mvn idea:idea,生成eclipse描述,mvn eclipse:eclipse。Sonar的安装:在安装Sonar之前,要保证你的电脑已经安装MySQL 5.x,JDK 1.5.x。
7、1.下载 到官方网站(http:/sonar.codehaus.org/)下载Sonar的压缩包,解压到任意目录。2.创建数据库Sonar默认使用嵌入式Derby数据库,如果要迁移到Mysql上,需首先创建一个sonar/sonar的UTF-8的mysql数据库,并授权访问sonar库。CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;grant all privileges on sonar.*to sonarlocalhost identified by sonar;grant all on sonar.*to
8、 sonar%identified by sonar;flush privileges;官方没有grant all on sonar.*to sonar%identified by sonar;如果你想远程发布项目到sonar,那就需要加上这条。3.修改confsonar.properties文件:然后还要更改sonar的配置,在sonar的解压目录下打开conf/sonar.properties,注掉如下内容(如果你没有mysql就可以不改动这个文件,sonar默认使用内嵌数据库derby)#sonar.jdbc.url:jdbc:derby:/localhost:1527/sonar;cr
9、eate=true#sonar.jdbc.driverClassName:org.apache.derby.jdbc.ClientDriver#sonar.jdbc.validationQuery:values(1)去掉下面的注释sonar.jdbc.url:jdbc:mysql:/192.168.1.151:3306/sonar?useUnicode=true&characterEncoding=utf8sonar.jdbc.driverClassName:com.mysql.jdbc.Driversonar.jdbc.validationQuery:select1配置已经完成可以在bin目
10、录项下进入相应平台的子目录,比如我的就是$sonar_homebin/linux-x86-32,sonar是多平台的,你可以在bin目录下查找你对应的平台,然后执行:$sonar_homebin/linux-x86-32/sonar.shstart启动后访问http:/localhost:9000就可以进入sonar了,默认管理员用户和密码是admin/admin。配置Maven和Sonar:编辑位于$MAVEN_HOME/conf 下的settings.xml文件,在profiles节点下面写上:sonar true jdbc:mysql:/localhost:3306/sonar com.
11、mysql.jdbc.Driver sonar sonar http:/localhost:9000 命令行进入项目:mvn sonar:sonar下载插件,项目发布到sonar上。使用Nexus作为Maven的私服:.m2/settings.xml配置:nexus-public-snapshotspublic-snapshotshttp:/localhost:8081/nexus/content/groups/public-snapshotsnexus*http:/localhost:8081/nexus/content/groups/public local 3rd http:/3rd p
12、arty true true 3rd http:/3rd party true true developmentcentralhttp:/centraltruetruecentralhttp:/centraltruetruepublic-snapshotspublic-snapshotshttp:/public-snapshotsfalsetruepublic-snapshotshttp:/public-snapshotsfalsetruedevelopment然后输入$mvn-Ppublic-snapshots clean install,将public-snapshots仓库作为Maven的私服。