Maven核心概念

一、坐标

组成:

groupId:定义maven当前组织名称

artifactId:定义实际项目名称

version:定义当前项目的当前版本

例如:

 <dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.15</version>
</dependency>

二、依赖:

1.依赖范围:

a.通过scope标签表示

b.常用值:

                                                     对主代码有效                对测试代码有效           被打包,运行时有效               例如

compile(默认值)                           Y                                       Y                                          Y                                log4j

test                                                                                                Y                                                                              junit

provided                                              Y                                      Y  servlet-api

runtime                                                                                                                                      Y                             JDBC Driver

例如:

   <dependency>  
     <groupId>junit</groupId>  
     <artifactId>junit</artifactId>  
     <version>4.0</version>  
     <scope>test</scope>  
   </dependency> 

2.依赖范围传递:



左边第一列表示第一直接依赖范围
上面第一行表示第二直接依赖范围
中间的交叉单元格表示传递性依赖范围。

归纳:
当第二依赖的范围是compile的时候,传递性依赖的范围与第一直接依赖的范围一致。
当第二直接依赖的范围是test的时候,依赖不会得以传递。
当第二依赖的范围是provided的时候,只传递第一直接依赖范围也为provided的依赖,且传递性依赖的范围同样为 provided;
当第二直接依赖的范围是runtime的时候,传递性依赖的范围与第一直接依赖的范围一致,但compile例外,此时传递的依赖范围为runtime;


3.依赖冲突:

a.跨pom文件的冲突,使用就近原则

b.同一个pom文件的冲突,遵循最下面的


4.依赖冲突解决方案:

a.

<optional>true</optional>标签:表示该依赖是否可选,默认是false,表示会传递下去。

b.exclusion标签排除依赖

<exclusions>
	<exclusion>
		<groupId></groupId>
		<artifactId></artifactId>
	</exclusion>
</exclusions>

三、生命周期

【注意】 在maven中,只要在同一个生命周期,你执行后面的阶段,那么前面的阶段也会被执行,而且不需要额外去输入前面的阶段


1.clean生命周期:

pre-clean 执行一些需要在clean之前完成的工作 
clean 移除所有上一次构建生成的文件 
post-clean 执行一些需要在clean之后立刻完成的工作 


2.default生命周期:

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 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。 输入前面的阶段


3.site生命周期:

pre-site 执行一些需要在生成站点文档之前完成的工作 
site 生成项目的站点文档 
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备 
site-deploy 将生成的站点文档部署到特定的服务器上 


四、插件plugin

1.编译插件:jdk版本

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>


2.tomcat插件:

<plugin>
	<groupId>org.apache.tomcat.maven</groupId>
	<artifactId>tomcat7-maven-plugin</artifactId>
	<configuration>
		<port>80</port>
		<path>/</path>
	</configuration>
</plugin>
使用  tomcat7:run 运行项目


五、继承

继承:表示的是pom文件的继承

1.子pom文件需要声明parent标签指明继承的父工程的GAV

	<parent>
		<artifactId>MavenDemo</artifactId>
		<groupId>com.milan.maven</groupId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>

2.父工程统一管理jar,故此子工程的依赖jar不需要verson标签












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值