本文最后更新于 659 天前,其中的信息可能已经有所发展或是发生改变。
maven翻译为“知识的积累”,“内行”,“专家”
作为Apache组织中颇为成功的一个开源项目,Maven主要服务于基于Java平台的项目构建,依赖管理和项目信息管理
编译,运行单元测试,生成文档,打包和部署
Xml定义构建脚本,更加友好极限编程(XP)是敏捷开发方法,强调拥抱变化。
JUnit,TestNGHudson,CruiseControl都能很好的和Maven集成,使用Maven后,持续集成会更加方便“只有两类计算机语言,一类语言天天被人骂,还有一类没人用。” ------C++之父
maven内置的超级POMmaven包含的第三方软件project object model,项目对象模型POM模型的版本Java代码,我们就能定义一个Maven项目的POM,体现了项目对象模型最大程度的和实际代码独立——解耦GroupId+ArtifactIdjar插件的jar目标SpringBoot的Starter很像,都是一堆jar包的集合略
org.sonatype.nexus)Maven项目(模块),推荐实际项目作为artifactId的前缀,例如nexus.indexerSNAPSHOT)nexus-indexer-2.0.0-javadoc.jar。注意,不能直接定义项目的classifiler,因为附属构件不是有项目直接产生的,而是由附加的插件帮助生成@Before注解,该方法将在@Test方法之前执行,就行aop一样,同理还有@After
packaging,大部分情况不必声明,默认为jarclasspath都有效,例如spring-core第一直接/第二直接 | compile | test | provided | runtime |
|---|---|---|---|---|
compile | compile | runtime | ||
test | test | test | ||
provided | provided | provided | provided | |
runtime | runtime | runtime |
<optional>true</optional><exclusion></exclusion>
groupId和atfactId,不需要version
<properties></properties>来控制某类依赖的版本,例如springmvn dependency:list,还可以通过树的形式查看mvn dependency:treemvn dependency:analyze分析依赖,可以得到未声明但被使用的依赖,和声明但未被使用的依赖Maven项目不再各自存储其依赖文件,只需声明坐标,在需要的时候(例如,编译项目的时候需要将其加入到classpath中),Maven会自动根据坐标,找到仓库中的构件,并使用他们<repository></repository><layout></layout>指仓库布局<snapshots></snapshots>配置是否下载快照版mvn clean deploy部署到远程仓库生命周期 | 目的 | 包含的阶段 |
|---|---|---|
clean | 清理项目 | 三个:pre-clean、clean、post-clean |
default | 构建项目 | validate、initialize、generate-sources、process-sources、generate-resources、process-resources、compile、process-classes、generate-test-sources、process-test-sources、generate-test-resources、process-test-resources、test-compile、process-test-classes、test、prepare-package、package、pre-integration-test、integration-test、post-integration-test、verify、install、deploy |
site | 建立项目站点 | 4个:pre-site、site、post-site、site-deploy |
clean 生命周期的阶段 插件的目标 pre-clean clean maven-clean-plugin:clean post-clean
生命周期阶段 插件目标 执行任务 process-resources maven-resources-plugin:resources 复制主资源文件至主输出目录 compile maven-compiler-plugin:compile 编译主代码至主输出目录 process-test-resources maven-resources-plugin:testResources 复制测试资源文件至测试输出目录 test-compile maven-compiler-plugin:testCompile 编译测试代码至测试输出目录 test maven-surefire-plugin:test 执行测试用例 package maven-jar-plugin:jar 创建项目 jar 包 install maven-install-plugin:install 将项目输出构件安装到本地仓库 deploy maven-deploy-plugin:deploy 将项目输出构件部署到远程仓库 注意:上表只列出了拥有插件绑定关系的阶段,default 生命周期还有很多其他阶段,默认它们没有绑定任何插件,因此也没有任何实际行为。
site 生命周期的阶段 插件的目标 pre-site site maven-site-plugin:site post-site site-deploy maven-site-plugin:deploy
<module>../xxxx</module>
../pom.xmlPost Views: 350