Java框架(三)之Maven(Maven工程创建、核心概念)

一、Maven工程创建

1.通过骨架创建

第一步:选择new→maven→Maven Project
第二步:next
第三步:next 选择maven的工程骨架,这里我们选择quickstart。
第四步:next 输入GroupId、ArtifactId、Version、Package信息点击finish完成。

2.不通过骨架创建maven工程

第一步:选择new→maven→Maven Project
第二步:next
第三步:next Packaging:指定打包方式,默认为jar。选项有:jar、war、pom。
第四步:点击finish,完成maven工程创建。

二、Maven核心概念

1.坐标

  • 定义

Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范
拥有了统一规范,就可以把查找工作交给机器

  • 主要组成(唯一的表示一个项目)

groupId:定义当前Maven组织名称
artifactId:定义实际项目名称
version:定义当前项目的当前版本

2.依赖管理

<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<scope>test</scope>
		</dependency>		
	</dependencies>

1.依赖范围

在这里插入图片描述
1.compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效
2.test:测试依赖范围。只对于测试classpath有效
3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
4.runtime:运行时提供。例如:jdbc驱动 runtime

2.依赖传递

直接依赖和间接依赖

如果B中使用A,C中使用B,则称B是C的直接依赖,而称A是C的间接依赖。
依赖范围对传递依赖的影响
在这里插入图片描述

总结:
1.当第二依赖的范围是compile的时候,传递性依赖的范围与第一直接依赖的范围一致。
2.当第二直接依赖的范围是test的时候,依赖不会得以传递。
3.当第二依赖的范围是provided的时候,只传递第一直接依赖范围也为provided的依赖,且传递性依赖的范围同样为 provided;

  • 当第二直接依赖的范围是runtime的时候,传递性依赖的范围与第一直接依赖的范围一致,但compile例外,此时传递的依赖范围为runtime;

3.依赖冲突

  • 如果直接与间接依赖中包含有同一个坐标不同版本的资源依赖,以直接依赖的版本为准(就近原则)
  • 如果直接依赖中包含有同一个坐标不同版本的资源依赖,以配置顺序下方的版本为准(就近原则)

4.可选依赖

true/false 是否可选,也可以理解为是否向下传递。
在依赖中添加optional选项决定此依赖是否向下传递,
如果是true则不传递,如果是false就传递,默认为false。

5.排除依赖

<exclusions
	<exclusion>
		<groupId>com.qf.maven</groupId>
		<artifactId>maven-first</artifactId>
	</exclusion>
</exclusions>

3.生命周期

1.定义

Maven生命周期就是为了对所有的构建过程进行抽象和统一。包括项目清理、初始化、编译、打包、测试、部署等几乎所有构建步骤。生命周期可以理解为构建工程的步骤。

2.分类

  • Clean Lifecycle: 在进行真正的构建之前进行一些清理工作。
  • Default Lifecycle: 构建的核心部分,编译,测试,打包,部署等等。
  • Site Lifecycle: 生成项目报告,站点,发布站点

3.三大生命周期

1.clean:清理项目

Clean生命周期一共包含了三个阶段:

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

2.default:构建项目(重要)

compile 编译项目的源代码。
test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
package 接受编译好的代码,打包成可发布的格式,如 JAR 。
install 将包安装至本地仓库,以让其它项目依赖。

3.site:生成项目站点

Site生命周期

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

4.Maven插件

Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的。每个插件都能实现一个功能,每个功能就是一个插件目标。Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务。

1.编译插件

<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>

2.Maven-tomcat插件

 <build>
        <finalName>HelloMaven4_web</finalName>
          <!-- 插件 -->
     		<plugins>
     			<plugin>  
    		      <groupId>org.apache.tomcat.maven</groupId>  
    		      <artifactId>tomcat7-maven-plugin</artifactId>  
    		      <version>2.2 </version>  
    		          <configuration>  
    		             <url>http://localhost:8080/HelloMaven4_web</url>  
    		             <server>tomcat</server>  
    		         </configuration>  
      			</plugin>
     		</plugins>
  </build>

3.使用maven创建一个web工程

第一步:不选用骨架
第二步:将打包方式选择为war
第三步:点击finish,工程创建成功。
第四步:在工程中添加web.xml
第五步:在webapp下创建index.jsp

猜你喜欢

转载自blog.csdn.net/xueer_z/article/details/82845244