maven的项目规约,也就是maven项目的通常结构

Maven module修改项目名 maven项目命名规范_Maven module修改项目名

 mvn常用的命令

mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=cn.sm1234
-DartifactId=hellojava -DarchetypeArtifactId=maven-archetype-quickstart
-Dversion=0.0.1-snapshot

Maven module修改项目名 maven项目命名规范_Maven module修改项目名_02

注意: 先进入项目目录后再操作!
 

Maven module修改项目名 maven项目命名规范_maven_03

根据你的ide配置好maven,然后就可以进行开发了,配置maven,所有的ide大同小异,都是需要主目录,setting文件的位置,仓库的位置,这里就不详细写了,网上的这方面资料很多。

 

maven的仓库

Maven module修改项目名 maven项目命名规范_Maven module修改项目名_04

 

Maven module修改项目名 maven项目命名规范_maven_05

坐标: 依赖在仓库中的位置,在仓库中找到依赖的标识。

Maven module修改项目名 maven项目命名规范_生命周期_06

 

Maven module修改项目名 maven项目命名规范_生命周期_07

 依赖管理(重点)

Maven module修改项目名 maven项目命名规范_spring_08

 依赖的范围,类的作用域。

Maven module修改项目名 maven项目命名规范_Maven module修改项目名_09

 

Maven module修改项目名 maven项目命名规范_Maven module修改项目名_10

  

Maven module修改项目名 maven项目命名规范_Maven module修改项目名_11

 依赖传递:当一个项目依赖另一个项目的时候,同时会将另一个项目所依赖的类导入类库。

假设 A 依赖于 B, B 依赖于 C, 我们说 A 对于 B 是第一直接依赖, B 对 C 是第二
直接依赖, A 对于 C 是传递性依赖。 第一直接依赖的范围和第二直接依赖的范围
决定了传递性依赖的范围。

Maven module修改项目名 maven项目命名规范_spring_12

在依赖节点 dependency 中的<optional>可以控制当前的依赖是否向下传递;
默认值为 false, 表示向下传递。
 

在 pom 中的依赖节点中, 如果引入的依赖包含了很多其它的传递依赖, 而且
项目需要的这些依赖的版本和传递依赖的不相符; 那么可以在依赖节点中设置排
除依赖节点: <exclusions> 然后再添加 <exclusion>, 其里面的内容包括:
   ①所包含坐标
   ②排除依赖包中所包含的依赖关系
【注意】 不需要添加版本, 直接类别排除

<dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-spring-plugin</artifactId>
  <version>2.3.24.1</version>
  <exclusions>
      <!-- 排除 spring-core 的传递依赖 -->
      <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
      </exclusion>
  </exclusions>
</dependency

 

 依赖冲突

 如果依赖的路径不相同的时候, 以最短的路径为准。

如果直接依赖中包含有同一个坐标不同版本的资源依赖, 以POM.xml配置顺序下方的
版本为准
如果间接依赖中包含有同一个坐标不同版本的资源依赖, 以POM.xml配置顺序上方的
版本为准

 

 

default 生命周期
 default 生命周期是 Maven 生命周期中最重要的一个, 绝大
部分工作都发生在这个生命周期中。 比较重要和常用的阶段如下:
validate
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 接受编译好的代码, 打包成可发布的格式, 如 JAR 。
pre-integration-test
integration-test
post-integration-test
verify 运行任何检查, 验证包是否有效且达到质量标准。
install 将包安装至本地仓库, 以让其它项目依赖。
deploy 将最终的包复制到远程的仓库, 以让其它开发人员与项目共享。
运行任何一个阶段的时候, 它前面的所有阶段都会被运行, 这也就是为什么运行
mvn install 的时候, 代码会被编译, 测试, 打包。 此外, Maven 的插件机制是完
全依赖 Maven 的生命周期的。