欢迎光临
我们一直在努力

maven学习笔记

1、依赖范围:compile,test,provided,runtime,system
2、传递性依赖:A依赖于B,B依赖于C,则A间接依赖于C,A的依赖范围受B和C影响
3、依赖调节原则:当依赖jar包产生重复冲突时,下载jar包路径最近者优先,第一声明者优先
4、可选依赖不会被传递,<optional>true</optional>
5、面向对象设计:单一职责性原则,一个类应该只有一项职责,而不是糅合多个功能;规划maven项目也是如此
6、排除依赖<exclusions><exclusions>...</exclusion></exclusions>
7、maven属性归类依赖:
<properties><springframework.version>2.5.6</springframework.version></properties>
<dependencies>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${springframework.version}</version>
    </dependency>
</dependencies>
8、maven仓库布局路径:groupId/artifactId/version/artifactId-version.packaging
9、maven仓库分为本地仓库和远程仓库;远程仓库主要有maven核心自带的中央仓库,以及私有仓库服务器(私服);可以有多个远程仓库,但是只有一个本地仓库;releases和snapshots元素设置发布版构件和快照版构件的下载;设置本地仓库地址使用localrepository元素,设置远程仓库地址:
    <repositories>
        <repository>
        ...
        </repository>
    </repositories>
10、默认仓库目录在.m2/repository下,配置文件settings.xml;
远程仓库认证信息放在settings.xml里面:
 <servers>    
    <server>
      <id>...</id>
      <username>...</username>
      <password>...</password>
    </server>    
 </servers>
11、maven生命周期:clean、default和site
12、maven生命周期和插件互相绑定,完成具体构建任务。maven通过绑定插件完成实际任务。插件仓库:
<pluginRepositories>
    <pluginRepository>
    <id><name><url><layout>...
    </pluginRepository>
</pluginRepositories>
13、maven的聚合特性是为了把项目多个模块一起构建,maven的继承特性则是为了抽取模块中相同的依赖和插件等配置。
聚合中父模块依赖:
<modules>
    <module>account-email</module>
    <module>account-persist</module>
</modules>
父模块只有pom文件和目录结构,没有src等文件结构;
聚合可以使用父子关系目录结构,平行目录结构;
继承是指子模块继承父模块依赖等配置。
<parent>
    <groupId><artifactId><version><relativePath>...
</parent>
14、依赖管理
父模块中:
<dependencyManagement>
    <dependencies>...</dependencies>
</dependencyManagement>
可以在父模块中声明依赖版本,子模块中省略版本就可以引入相关依赖,不添加父模块中依赖就不会引入多余依赖。
15、插件管理
父模块中:
<pluginManagement>
    <plugins>
    ...
    </plugin>
</pluginManagement>
16、maven默认的清除构建目录,创建目录,编译代码,复制依赖到目标目录,最后打包流程。源码默认目录为src/main/java,编译输出target/classes/,打包方式为jar,包输出目录为target//
17、反应堆:模块构建顺序
18、maven使用约定优于配置
19、Nexus:Maven仓库管理软件(可以下载war包在tomcat里面运行,自己搭建私服)
Nexus内置仓库:group(仓库组),hosted(宿主),proxy(代理)和virtual(虚拟)
使用镜像让maven只使用私服下载依赖包
 <mirrors>
    <mirror>
        <id>...</id>
        <name>...</name>
        <url>...</url>
        <mirrorOf>*</mirrorOf>
    </mirror>    
  </mirrors>
20、使用maven进行测试:
maven-surefire-plugin测试插件
动态指定运行单元测试的类:$mvn test -Dtest=RandomTest
21、生成测试报告:maven有基本的测试报告,TestNG框架测试报告,JUnit框架也可以打印出测试报告
22、重用测试代码:maven-jar-plugin插件打包测试代码重复使用
23、使用jetty-maven-plugin进行单元测试
24、插件实现自动化热部署
25、Cargo实现自动化部署,可以部署到本地web容器和远程web容器
26、<build>标签管理构建项目:
<resources>管理资源
<pluginManagement>:父模块中定义详细参数,子模块引用
<plugins>给出构建过程中所用到的插件

<extensions>是执行构建过程中可能用到的其他工具,在执行构建的过程中被加入到classpath中。
也可以通过<extensions>激活构建插件,从而改变构建的过程。
通常,通过<extensions>给出通用插件的一个具体实现,用于构建过程。
27、profiles里面的<build>
28、上传插件到远程仓库:
<distributionManagement>
    <repository>
            <id>x.x.x</id>
            <url>http://.../repository/maven-releases/</url>
        </repository>
</distributionManagement>
29、<mirror>镜像配置:
<mirrors>
    <mirror>
      <id>maven-net-cn</id>
      <name>Maven China Mirror</name>
      <url>http://maven.net.cn/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>//使用maven-net-cn覆盖了Maven自带的central
    </mirror>
  </mirrors>
<mirrorOf>*</mirrorOf>覆盖所有,成为唯一仓库
30、<pluginRepositories>标签:配置maven插件的远程仓库,插件打包时需要远程下载的依赖
<pluginRepositories>
        <pluginRepository>
            <id>maven.aliyun.com</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases>
                <updatePolicy>never</updatePolicy>
            </releases>
        </pluginRepository>
    </pluginRepositories>
31、settings.xml文件配置远程仓库:
<repositories>
        <repository>
            <id>nexus</id>
            <name>Nexus Repository</name>
            <url>远程仓库地址</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>  <!--snapshots默认是关闭的,需要开启  -->
            </snapshots>
        </repository>
    </repositories>

重难点
1、<packaging>pom</packaging>
maven项目的打包类型:pom、jar、war
packing默认是jar类型,
pom是最简单打包类型,是为了传递依赖或者聚合工程而使用的。多项目中父项目都为pom类型。
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
  <module>xxx</module>
</modules>

2、maven加载配置文件顺序:
settings.xml是maven的全局配置文件。而pom.xml文件是所在项目的局部配置
settings.xml文件一般存在于两个位置:
全局配置: ${M2_HOME}/conf/settings.xml
用户配置: user.home/.m2/settings.xml
用户配置优先于全局配置。
局部配置优先于全局配置。配置优先级从高到低:pom.xml> user settings > global settings
如果这些文件同时存在,在应用配置时,会合并它们的内容,如果有重复的配置,优先级高的配置会覆盖优先级低的。

3、repository和mirror的区别
如果setting.xml和pom里都配置了repository, 配置的mirror是可以对两个配置文件都生效。与repository不同,配置到同一个repository的多个mirror时,相互之间是备份的关系,只有在仓库连不上的时候才会切换另一个,而如果在能连上的情况下找不到包,是不会尝试下一个地址的。
配置多个repository时maven会按照配置从上到下的顺序,依次尝试从各个地址下载,成功下载为止。
maven里的mirror和repository是两个比较容易混淆的概念,它们的作用都是配置远程maven仓库的地址。顾名思义,repository就是直接配置站点地址,mirror则是作为站点的镜像,代理某个或某几个站点的请求,实现对repository的完全代替。

mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。

<mirrorOf></mirrorOf>标签里面放置的是要被镜像的Repository ID。为了满足一些复杂的需求,Maven还支持更高级的镜像配置:

    <mirrorOf>*</mirrorOf> 匹配所有远程仓库。

    <mirrorOf>repo1,repo2</mirrorOf> 匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。

    <mirrorOf>*,!repo1</miiroOf> 匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。
如果该镜像仓库需要认证,则配置setting.xml中的<server></server>即可。

mirror,server,repository怎么配置才合适!!!
优先配置pom.xml中repository,优先配置去私服下载,再去阿里云下载。
需要上传jar时才配置server。
settings.xml中mirror可以不配置,多个仓库地址切换时可以用profile。

4、server配置
server认证用户名密码,server中id和repository.id保持一致。一般在在pom.xml文件中的repositories和distributionManagement元素中定义

5、maven获取jar顺序:本地仓库获取-远程仓库(公司的私服)获取-中央仓库(阿里云镜像)获取

 

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《maven学习笔记》
文章链接:https://www.456zj.com/38422.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址