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