maven的目录结构:

src

     ---main

         ---java

            ---package

     ---test

         ---java

            ---package

     ---resources

 一个pom的元素:<modelVersion>4.0.0</modelVersion> 表示maven的版本时4.0.0

       <groupId>是公司网站的反写加项目名</groupId>

      <artifactId>是项目名加模块名<artifactId>

      <version>版本<version>

                   <dependencies>

      <dependency>

        所依赖的包

      </dependency>

        </dependencies>

mvn常用构建命令:

mvn -v查看maven的版本

  compile 编译

       test   测试    //用到junit jar包,测试函数前加test注解

  package    打包

       clean  用来清楚compile参数的二进制文件等等

  install  将生产的jar包安装到本地仓库

  archetype:generate  生成maven目录 -DgoupId -DartifactId -Dversion -Dpackage 代码所存在的包名 

maven中所有的插件,依赖等都可以称为构件,所有的构件都可以通过坐标作为其唯一的标识,groupId,artifactId,Version来构成一个构件的ID

maven的有本地仓库和全球仓库,首先maven会在本地仓库中搜索需要的jar包,没有就会去全球仓库中去下载,本地仓库默认在用户目录下的一个.m2文件里,这些地址都存在maven包中的一个文件里,可以修改。

maven的生命周期包括三个部分:clean:清理项目 , default 构建项目 , site生成项目。其中每个部分又包括多个阶段。当执行一个生命周期中的一个阶段的命令时,会触发这个部分中的这个阶段前的那些阶段,但不会触发别的部分中的阶段。

各个部分包含的阶段

clean: preclean 执行清理前的工作;clean清理上一次构建生成的所有文件;post-clean执行清理后的文件

default:compile;test;package;install

site:pre-site在生成站点前要完成的工作;site在生成项目的站点文档;post-site在生成站点后要完成的工作;site-deploy发布站点到服务器

在pom中添加<build><plugins><plugin>     </plugin></plugins></build>  里添加plugin的坐标,然后可以在plugin里<executions><execution><phase>运用插件的阶段如:package</phase><goals><goal> 插件的目标</goal></goals></execution><executions> 来让插件在特定的阶段完成一定的工作。比如添加source插件,phase为package,会将源码也打包进jar包。

pom常用元素 

      <groupId>是公司网站的反写加项目名</groupId>

      <artifactId>是项目名加模块名<artifactId>

      <version>版本<version>

      <packaging>打包的方式,默认是jar,还可以是war包,zip包,pom包</packaging>

      <name>标签,项目描述名,产生项目文档的时候使用

      依赖里的标签<option>true or false</>true的话自动会被子项目默认的继承,false的话,必须被显示的引入。默认是fales。

            <exclusions><exclusion>写会排除依赖哪些jar

            <scope>compile,runtime等等6种</scope>里定义依赖的范围,即依赖的包的有效的范围

       在一个模块里可以定义<dependencyManagement>里定义依赖列表,但是在这个项目里不会包含这些依赖,这是父项目供子模块继承用的。

      <parent>里定义所继承的父项目

      <modules>里定义子模块列表,这样可以在编译父模块时,统一把子模块也编译了

      依赖的传递遵循:1传递性。2短路优先。3路径相同时,先声明先优先。

聚合:在父pom中声明项目中包含哪些<modules><module></module></modules>中,就会把不同的modules聚合到一块.

  将父pom所在项目的packing里的值改为pom.在子项目中的pom中加入<parent>父pom的坐标</parent>,使子pom继承父pom