Maven小知识点

1)Maven利用生命周期与对应的插件绑定来完成任务,为我们简化好多操作。执行Maven命令时,执行当前命令Maven按照生命周期会把
之前的命令全执行一遍,如执行mvn package时它会先执行mvn compile(编译)等操作。

2) Maven约定优于配置,如Maven工程的目录结构固定,如:src/main/java用于写业务代码,src/test/java用于写测试代码。

3)Maven坐标:Maven利用坐标,就可以到仓库去下载对应的jar包,利用groupId和artifactId就可以确定唯一坐标,省去了我们到各个网站去找对应的jar,从而节省时间。下载后的jar包在仓库里统一管理。
如当打成war包时,Maven再根据依赖把对应的jar包加载到工程对应的webapp下的lib文件夹下。

4)利用私服来减少对外网的访问从而减少带宽。

5)利用聚合来管理多模块,用继承来减少重复依赖。

6)与版本工具配合可以完成自动化部署。

7)groupId、artifactId
   groupId: 定义当前Maven项目隶属的实际项目,可以用公司域名的反转加上项目名。如:org.apache.shiro,org.apache.commons,其中org.apache是公司域名倒过来写,shiro是公司的项目名称。
   artifactId:是模块名,推荐是使用实际项目名做为artifactId的前缀。如shiro-core


 org.apache.shiro
 shiro-core

8) 可以既是聚合又是继承。
    pom
   
        child1
        child2
   

9) dependencyManagement父子模块都先不引入,只做依赖声明和版本号定义。插件依赖也有对应的pluginManagement用法类似。
dependencyManagement:既能让子模块继承到父模块的依赖配置,又能保证子模块依赖使用的灵活性。在dependencyManagement元素下的依赖声明不会引入实际的依赖。
但它可以约束dependencies的使用。如版本号的定义。在父模块声明后在子模块要想使用相关的依赖。直接写出groupId、artifactId即可,因为版本号在父模块已经定义好了。

父模块

   
       
            org.apache.shiro
            shiro-core
        
            1.3.2 
       

   

子模块

   
        org.apache.shiro
        shiro-core
   

10)模块构建时修剪,即在多模块中可以指定具体的模块参与构建。 mvn -h 查看具体的选项。下面列出几个。
-am,同时构建所列模块的依赖模块。就加当于类加载,如果子类依赖父类,就顺带把父类也给加载了。
-amd,同时构建依赖所列模块的模块。就是如果构建父模块顺带把子模块也一起构建。
-pl,构建指定模块,多个模块之间用逗号分隔。
-rf,从指定模块开始构建,有点像字符串截取,比如有3个模块可以指定只构建后两个,也就是从第二个模块开始构建。

如:mvn clean install -pl module1 -amd -rf module2 其中module1和module2换成实际的模块名称。

本文参考《Maven实战》
 

你可能感兴趣的:(maven)