项目管理工具——Maven简要介绍

Maven

Apache Maven 是一种用于软件项目管理工具,基于Project Object Model(POM),用来管理项目的构建,汇报及文档生成等功能。作为插件在Idea中使用。

手动导入jar包需要:
1).自行下载jar 文件
2). 手动把jar 文件复制到项目目录中
3). 更改很多的IDEA 配置
4). 如果别人的jar 包还依赖了其他类库,需要递归进行这个过程.

通过Maven管理jar包,可以省去很多麻烦,尤其是项目很大的时候。maven 的目标是完成项目构建解决的一切繁琐事宜。我们具体关注它的以下功能:
1). 提供一个标准的项目工程目录
2). 提供项目描述
3). 提供强大的版本管理工具
4). 可以分阶段的进行构建过程
5). 提供了丰富的插件库使用

1 通过IDEA 创建maven 项目

(1)新建maven 类型的项目
在这里插入图片描述

(2)输入合适的GroupId 和ArtifactId,一般GroupId 代表的是机构名称,ArtifactId 描述项目的名称。
在这里插入图片描述
(3)选择项目路径
在这里插入图片描述
(4)开启自动导入功能
在这里插入图片描述
至此项目新建完成。

2 Maven项目目录介绍

在这里插入图片描述

  • src\main\java 放我们的要写的代码。
  • src\main\resources 下一般是用于同时部署的一些资源文件,例如图片、音频、视频等
  • src\test\java 一般用来放一些测试代码
  • pom.xml 为maven 最重要的文件,是maven 的配置描述文件。
3 maven 的配置文件——pom.xml

pom.xml 文件后缀名表示这个文件是用XML 格式进行组织,Java 语言中经常会用XML 用来做配置管理。setting.xml主要用于配置maven的运行环境等通用属性;而pom.xml主要描述项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项目相关因素。

依赖管理:
我们的项目用到了另一个项目,叫做依赖关系。而一个项目中往往需要很多的依赖,所以诞生了依赖管理的概念。maven 仓库(maven repository)类似于一个App Store,里面有很多第三方jar包供我们使用。在pom.xml中添加完依赖后,IDEA 中的maven 会自动帮我们进行依赖jar 包的下载。

注意:
仓库还有个含义是本地仓库,主要指的是我们下载下的依赖存放的位置。

(1) 基础配置

1). 打包的机制
如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar

  <packaging>war</packaging>  

参考博客:Maven的三种打包方式

2). dependency依赖
定义本项目的依赖关系,每个dependency都对应这一个jar包。maven通过groupId、artifactId、version这三个元素值(俗称坐标)来检索该构件, 然后引入你的工程。

 <dependencies>  
       <dependency>
         <groupId>com.winner.trade</groupId>  
          <artifactId>trade-test</artifactId>  
          <version>1.0.0-SNAPSHOT</version> 
       </dependency>  
</dependencies>

dependency management和dependency的区别:
dependency management只需要在公共模块定义版本号,子模块可以不声明版本号,直接用。dependency可以直接用父模块的依赖而不用声明,或者自己重新定义依赖和版本号。
参考博客:dependency management和dependency的区别

3).properties指定属性信息

<properties>
	<encoding>UTF-8</encoding>
	<maven.compiler.source>1.8</maven.compiler.source>
	<maven.compiler.target>1.8</maven.compiler.target>
</properties>
(2) 构建(打包)配置——build

finalName 指定最终war 包的名称
pluginManagement明确指定一些插件的版本,以免受到maven 版本的影响。

<build>  

    <finalName>myPorjectName</finalName>   
       
	<pluginManagement>
		<plugins>
			<plugin>
				<artifactId>maven-clean-plugin</artifactId>
				<version>3.1.0</version>
			</plugin>
			
			<plugin>
				<artifactId>maven-resources-plugin</artifactId>
				<version>3.0.2</version>
			</plugin>
			
		</plugins>
	</pluginManagement>
	
</build>

<pluginManagement> 类似于dependencyManagement, 所有继承于此项目的子项目都能使用。

参考博客:
[1] Maven详细配置

[2] maven常用插件

(3) profile属性——配置文件激活

在开发过程中,项目会存在不同的运行环境,比如开发环境、测试环境、生产环境,而在不同的环境中,有的配置可能会不一样,比如数据源配置、日志文件配置。那每次我们将项目布署到不同的环境时,都需要修改相应的配置文件,这样来回修改,很容易出错,而且浪费劳动力。

类似于springboot配置文件中的profile分割。参考博客:SpringBoot中的两种配置文件

maven中修改profile的参考博客:https://blog.csdn.net/java_collect/article/details/83870215

(4) scope属性

依赖范围控制哪些依赖在哪些classpath 中可用,哪些依赖包含在一个应用中。

compile (编译)
compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath中可用,同时它们也会被打包。

provided (已提供)
provided 依赖只有在当JDK 或者一个容器已提供该依赖之后才使用。例如, 如果你开发了一个web 应用,你可能在编译 classpath 中需要可用的Servlet API 来编译一个servlet,但是你不会想要在打包好的WAR 中包含这个Servlet API;这个Servlet API JAR 由你的应用服务器或者servlet 容器提供。已提供范围的依赖在编译classpath (不是运行时)可用。它们不是传递性的,也不会被打包。

runtime (运行时)
runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC
驱动实现。

test (测试)
test范围依赖 在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。

参考博客:scope属性详解

4 生命周期
  • clean:清理上一次构建过程中生成的文件(整个Target文件夹)
  • validate:验证项目结构是否正常,必要的配置文件是否存在
  • compile :编译项目的源代码(src/main/java或src/test/java中的文件)
  • test:用合适的框架进行测试,测试compile中编译出来的代码
  • package :将编译后的 class 和资源打包成压缩文件,比如 JAR
  • vertify:检查测试后的包是否完好
  • install:将打包的组件以构件的形式,安装到本地依赖仓库中,以便共享给本地的其他项目
  • site:生成项目的站点文档
  • deploy:将测试后的最终包以构件的方式发布到远程仓库中,方便所有程序员共享

在这里插入图片描述
我们可以点击package 进行打包,成功后,项目的target 文件夹下会生成Fo-1.0-SNAPSHOT.jar 包。但这个jar 包是不带Main-Class 的jar 包,即无法直接运行。

注意:
使用插件可以打包带Main-Class 的jar 包。

5 IDEA Maven窗口

在这里插入图片描述

Reload All Maven Projects:根据 pom.xml 文件的配置重载所有的 Maven 项目
Generate Sources and Update Folders For All Projects:让源代码重新编译

6 查找依赖并添加

百度搜:spring maven

在这里插入图片描述
单机Spring Web MVC后,选择Maven依赖的版本。
在这里插入图片描述
拿到依赖:
在这里插入图片描述
只导入了一个Spring Web MVC就带出这么多附属的依赖包
在这里插入图片描述

7 创建Maven项目

创建一个Maven项目后,可以将src目录删掉,然后将该项目作为父项目,在其模块下新建一些maven模块。
在这里插入图片描述
此时新建的模块名,最好加两个-,否则项目会出现两个项目名。
在这里插入图片描述
子模块就建好了,此时pom.xml是继承自父模块的。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值