maven实战

1.maven仓库有3种

本地仓库/私服/中央仓库,需要jar包时,依次查找

2.settings.xml可以放在两个地方

config\settings.xml的设置本电脑的所有用户都有效,.m2\settings.xml只有本用户有效

3.本地仓库可以自己配置 maven\conf\settings.xml中

D:/dev/repo</localRepository>即为本地仓库位置

4.私服及中央仓库配置

  <id>nexus</id>
  <repositories>
    <repository>
      <id>nexus</id>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <releases>
         <enabled>true</enabled>
      </releases>         
    </repository>
  </repositories>
  <pluginRepositories>
      <pluginRepository>
          <id>nexus</id>
          <url>http://192.168.1.5:8081/nexus/content/repositories/public</url>
          <snapshots>
              <enabled>false</enabled>
          </snapshots>
    </pluginRepository>
      <pluginRepository>
          <id>central</id>
          <url>http://repo1.maven.org/maven2</url>
          <snapshots>
              <enabled>false</enabled>
          </snapshots>
    </pluginRepository>       
  </pluginRepositories>
</profile>

5.依赖传递冲突的两个原则:

路径最近原则:传递次数少的
第一声明原则:pom文件里在上面的

6.父pom同时也可以是是聚合pom

7.父pom规定jar包版本,子pom选择性使用(不需要带版本号)

8.约定优于配置

用一些固定套路减少配置,如包结构是固定死的,(同时也可以自定义配置修改,但是这样就失去意义了 )

9.私服的作用

降低中央仓库负荷.节省带宽.加速maven构建.自己部署构件

分类:

group仓库组  hosted宿主仓库  proxy代理  virtual虚拟  (还有一个policy策略)
其中仓库组是虚拟的,里边并没有jar包,而是去其他仓库中查找

10.nexus常见问题

两种启动方式:自启动/tomcat启动
部署容易,把war包放入tomcat的webapps下即可
8081端口占用 在/conf/plexus.properties中的application-port设置即可
默认是匿名访问,管理员账号密码是admin/admin123

11.maven配置全局变量

一般maven配置只对本项目有效,settings.xml不支持repositories和pluginResitories,但是可以将配置放到settings.xml中的Profile中.

12.权限和角色

admin 不解释.密码admin123
deployment 浏览/搜索/上传部署构件,不能配置.密码deployment123
anonymous 匿名用户,浏览/搜索

13.testNG

testNG比JUnit好的地方就是支持测试组.可在plugin中配置

14.构建web应用

如果依赖本醒目的其他模块,可以用${project.groupId}和${project.version}来表示版本,后续升级则不需要修改版本号

配置<\finalName>hehe<\/finalName>

使war包命名更简洁,不需要展示hehe-web-1.0.0-SNAPSHOT.war而是简单的hehe.war

jetty

使用jetty-maven-plugin插件可以节省打包和部署的时间
settings.xml里要配置<pluginGroup>org.mortbay.jetty</pluginGroup>

cargo自动化部署

支持tomcat/jboss/jetty/glassfish等容器

版本(jar包的版本?)

版本管理:项目整体版本演变过程
版本控制:借助版本控制工具追踪代码的每一个变更

版本名解析

1.3.4-bate-2表示<主版本>.<次版本>.<增量版本>-<里程碑版本>
主版本:项目重大架构变更
次版本:交大范围功能增加和变化及bug修复
增量版本:重大bug修复
里程碑:某一版本的里程碑(不是非常稳定,还需测试)

主干/标签/分支

主干trunk:代码主体,有所有变更历史
分支branch:从主干某个点分离出来的copy,在不影响主干的情况下重大bug修改,最终会合并到主干上
标签tag:用来标识主干或分支某个点的状态,通常是发布时的状态

属性

内置属性:

${basedir}:根目录,包含pom文件
${version}项目版本

pom属性

引用pom中对应元素值:${project.artifactId}对应了<project><artifactId>的值
常用包括:${project.build.sourceDirectory}主源码目录,默认:src/main/java
        ${project.build.testSourceDirectory}测试源码目录,默认:target/test/java
        ${project.build.directory}项目输出目录,默认:target
        ${project.outputDirectory}主代码编译输出目录,默认:target/classes
        ${project.testOutputDirectory}测试代码编译输出目录,target/test-classes
        ${project.groutId}项目groupId
        ${project.artifactId}项目artifactId
        ${project.version}项目version
        ${project.build.finalName}项目打包输出文件名称,默认${project.artifactId}-${project.version}

自定义属性

settings属性

引用settings.xml中的xml元素值

java系统属性

如${user.home}指向用户目录

环境变量属性

可以使用以env.开头的maven属性引用

profile的种类

pom.xml

只对当前项目有效

用户settings.xml

.m2下,对本机该用户所有maven有效

全局settings.xml

在conf下,对本机所有maven项目有效

profiles.xml

项目下建一个profiles.xml,(只在maven2有效,maven3已去除,可放到settings里)

建议使用用户级settings

一些插件

checkstyle

用来检查代码是否符合规范,可自行配置规则,在config目录下,使用eclipse插件
项目有多个模块的话会有问题,不支持聚合

pmd

代码分析工具,查找bug,优化代码

changelog

自动生成三分变更报告:
change log:日期/文件/作者/注释等
developer activity:作者列表/提交次数和涉及的文件数目
file activity:变更文件列表和每个文件变更次数

m2eclipse

创建和导入maven项目
管理以来并与eclipse的classpath集成
自动下载依赖
自动解析依赖的sources和javadoc包
使用maven Archetype创建项目
浏览和搜索远程maven仓库
从maven pon具体化一个项目
从scm仓库签出maven项目
自动适配嵌套的多模块maven项目至eclipse
集成web tools projects(WTP)
集成subclipse
集成mylyn
可视化pom编辑
图形化依赖分析

打包

clean install -e -Dmaven.javadoc.skip=true
清理   安装 显示错误信息 传参 跳过doc
posted @ 2018-01-09 16:09  robsky  阅读(109)  评论(0编辑  收藏  举报