欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

教你从头开始使用 Maven,从此项目打包无需担心

最编程 2024-04-16 17:45:48
...

文章目录

一、主要内容

二、Maven的简介

2.1. 简介

2.2. 项⽬构建

2.3. 项⽬构建⼯具

2.4. Maven的四⼤特性

2.4.1. 依赖管理系统

2.4.2. 多模块构建

2.4.3. ⼀致的项⽬结构

2.4.4. ⼀致的构建模型和插件机制

三、Maven的安装配置和⽬录结构

3.1. Maven的安装配置

3.1.1. 检查JDK的版本

3.1.2. 下载Maven

3.1.3. 配置Maven环境变量

3.1.4. 检查Maven是否安装成功

3.2. 认识Maven⽬录结构

3.2.1. 创建⼀个⽂件夹作为项⽬的根⽬录

3.2.2. 编写主函数

3.2.3. cmd 下编译并运⾏

四、Maven命令

4.1. 常⽤命令

4.2. 命令参数

4.2.1. -D 传⼊属性参数

4.2.2. -P 使⽤指定的Profile配置

五、IDEA编辑器集成Maven环境

5.1. 设置Maven版本

六、Maven项⽬的创建

6.1. 创建 Java项⽬

6.1.1. 新建项⽬

6.1.2. 编译项⽬

6.2. 创建 Web项⽬

6.2.1. 创建项⽬

6.2.2. 修改配置文件

6.2.3. 启动项⽬

七、Maven仓库的基本概念

7.1. *仓库

7.2. 私服

7.3. 其他公共库

八、Maven环境下构建多模块项⽬

8.1. 创建 maven_parent 项⽬

8.2. 创建 maven_dao 模块

8.3. 创建 maven_service 模块

8.4. 建 maven_controller 模块

8.5. 修改模块的配置

8.6. 设置模块之间的依赖

8.6.1. maven_dao

8.6.2. maven_service

8.6.3. maven_controller

九、Maven的打包操作

9.1. 建⽴对应的⽬录结构

9.2. 添加Profile配置

9.3. 设置资源⽂件配置

9.4. 执⾏打包操作

十、Maven依赖的基本概念

10.1. 依赖的基本配置

10.2. 依赖范围

10.3. 传递性依赖

一、主要内容

网络异常,图片无法展示
|


二、Maven的简介

2.1. 简介

Maven【[ˈmevən]】这个词可以翻译为"专家",“内⾏”。作为Apache组织中的⼀个颇为成功的开源项⽬,Maven主要服务于基于java平台的项⽬构建,依赖管理和项⽬信息管理。


⽆论是⼩型的开源类库项⽬,还是⼤型的企业级应⽤; ⽆论是传统的瀑布式开发,还是流⾏的敏捷开发,Maven都能⼤显身⼿。


2.2. 项⽬构建

不管你是否意识到,构建(build)是每⼀位程序员每天都在做的⼯作。早上来到公司,我们做的第⼀件事就是从源码库签出最新的代码,然后进⾏单元测试,如果测试失败,会找相关的同事⼀起调试,修复错误代码。 接着回到⾃⼰的⼯作上来,编写⾃⼰的单元测试及产品代码。


仔细总结⼀下,我们会发现,除了编写源代码,我们每天有相当⼀部分时间花在了编译,运⾏单元测试,⽣成⽂档,打包和部署等繁琐且不起眼的⼯作上,这就是构建。 如果我们现在还⼿⼯这样做,那成本也太⾼了,于是有⼈⽤软件的⽅法让这⼀系列⼯作完全⾃动化,使得软件的构建可以像全⾃动流⽔线⼀样,只需要⼀条简单的命令,所有繁琐的步骤都能够⾃动完成,很快就能得到最终结果。


2.3. 项⽬构建⼯具

Ant构建


最早的构建⼯具,基于IDE, ⼤概是2000年有的,当时是最流⾏java构建⼯具,不过它的XML脚本编写格式让XML⽂件特别⼤。对⼯程构建过程中的过程控制特别好


Maven【JAVA】

项⽬对象模型,通过其描述信息来管理项⽬的构建,报告和⽂档的软件项⽬管理⼯具。它填补了Ant缺点,Maven第⼀次⽀持了从⽹络上下载的功能,仍然采⽤xml作为配置⽂件格式。Maven专注的是依赖管理,使⽤Java编写。


Gradle


属于结合以上两个的优点,它继承了Ant的灵活和Maven的⽣命周期管理,它最后被google作为了Android御⽤管理⼯具。它最⼤的区别是不⽤XML作为配置⽂件格式,采⽤了DSL格式,使得脚本更加简洁。


⽬前市⾯上Ant⽐较⽼, 所以⼀般是⼀些⽐较传统的软件企业公司使⽤, Maven使⽤Java编写, 是当下⼤多数互联⽹公司会使⽤的⼀个构建⼯具, 中⽂⽂档也⽐较⻬全, gradle是⽤groovy编写, ⽬前⽐较新型的构建⼯具⼀些初创互联⽹公司会使⽤, 以后会有很⼤的使⽤空间.


2.4. Maven的四⼤特性

2.4.1. 依赖管理系统

Maven为Java世界引⼊了⼀个新的依赖管理系统jar包管理 jar 升级时修改配置⽂件即可。在Java世界中,可以⽤groupId、artifactId、version组成的Coordination(坐标)唯⼀标识⼀个依赖。


任何基于Maven构建的项⽬⾃身也必须定义这三项属性,⽣成的包可以是Jar包,也可以是war包或者jar包。⼀个典型的依赖引⽤如下所示:

<dependency>
 <groupId>javax.servlet</groupId> com.baidu
 <artifactId>javax.servlet-api</artifactId> ueditor echarts
 <version>3.1.0</version>
</dependency>

坐标属性的理解


Maven坐标为各种组件引⼊了秩序,任何⼀个组件都必须明确定义⾃⼰的坐标。


groupId


定义当前Maven项⽬⾪属的实际项⽬-公司名称。(jar包所在仓库路径) 由于Maven中模块的概念,因此⼀个实际项⽬往往会被划分为很多模块。 ⽐如spring是⼀个实际项⽬,其对应的Maven模块会有很多,如spring-core,spring-webmvc等。


artifactId


该元素定义实际项⽬中的⼀个Maven模块-项⽬名, 推荐的做法是使⽤实际项⽬名称作为artifactId的前缀。 ⽐如: spring-bean, spring-webmvc等。


version


该元素定义Maven项⽬当前所处的版本


2.4.2. 多模块构建

项⽬复查时 dao service controller 层分离将⼀个项⽬分解为多个模块已经是很通⽤的⼀种⽅式。


在Maven中需要定义⼀个parent POM作为⼀组module的聚合POM。在该POM中可以使⽤ 标签来定义⼀组⼦模块。parent POM不会有什么实际构建产出。⽽parent POM中的build配置以及依赖配置都会⾃动继承给⼦module。


2.4.3. ⼀致的项⽬结构

Ant时代⼤家创建Java项⽬⽬录时⽐较随意,然后通过Ant配置指定哪些属于source,那些属于testSource等。⽽Maven在设计之初的理念就是Conversion over configuration(约定⼤于配置)。其制定了⼀套项⽬⽬录结构作为标准的Java项⽬结构,解决不同ide 带来的⽂件⽬录不⼀致问题。


2.4.4. ⼀致的构建模型和插件机制

<plugin>
 <groupId>org.mortbay.jetty</groupId>
 <artifactId>maven-jetty-plugin</artifactId>
 <version>6.1.25</version>
 <configuration>
 <scanIntervalSeconds>10</scanIntervalSeconds>
 <contextPath>/test</contextPath>
 </configuration>
</plugin>

三、Maven的安装配置和⽬录结构

3.1. Maven的安装配置

3.1.1. 检查JDK的版本

JDK版本1.7及以上版本

image.png


3.1.2. 下载Maven

下载地址:http://maven.apache.org/download.html

3.1.3. 配置Maven环境变量

解压后把Maven的根⽬录配置到系统环境变量中MAVEN_HOME,将bin⽬录配置到path变量中。


注意:maven解压后存放的⽬录不要包含中⽂和空格


步骤:电脑 > 属性 > 高级系统设置 > 环境变量

image.png

Path里面添加:%MAVEN_HOME%

image.png


3.1.4. 检查Maven是否安装成功

打开dos窗⼝,执⾏ mvn -v

image.png


3.2. 认识Maven⽬录结构

Maven项⽬⽬录结构

image.png


任务:⼿动创建⼀个Maven项⽬,并编译运⾏成功

image.png



3.2.1. 创建⼀个⽂件夹作为项⽬的根⽬录

在根⽬录中创建⼀个pom.xml⽂件,内容如下

<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.xxxx</groupId>
 <artifactId>maven01</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
 <name>maven01</name>
 <url>http://maven.apache.org</url>
 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>
 <dependencies>
 <dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>3.8.1</version>
 <scope>test</scope>
 </dependency>
 </dependencies>
 
</project>

Ps:标签定义解释


根⽬录下的第⼀个⼦元素 ModelVersion指定当前Pom模型的版本,对于Maven3来说,它只能是4.0.0。
指定了当前Maven模型的版本号,对于Maven2和Maven3来说,它只能是4.0.0

groupId定义了项⽬属于哪个组, 这个组往往和项⽬所在的组织和公司存在关联。
⽐如: com.xxxx

artifactId 定义了当前Maven项⽬在组中唯⼀的ID。
Version X.X.X-⾥程碑
⽐如:1.0.0-SNAPSHOT 
第⼀个X ⼤版本 有重⼤变⾰
第⼆个X ⼩版本 修复bug,增加功能
3.2.2. 编写主函数
3.2.3. cmd 下编译并运⾏
cmd下⾯,进⼊项⽬的根⽬录
1. 编译java⽂件
 mvn compile
2. 执⾏main ⽅法
mvn exec:java -Dexec.mainClass="com.xxxx.demo.Hello"
注:第⼀次下载会⽐较慢,要修改maven解压之后的conf⽬录下的settings.xml。
第三个X 更新
⾥程碑版本:
SNAPSHOT (快照,开发版)
alpha(内部测试)
beta(公开测试)
Release | RC( 发布版)
GA(正常版本)
使⽤name标签声明⼀个对于⽤户更为友好的项⽬名称,虽然不是必须的,但还是推荐为每个Pom声明
name,以⽅便信息交流。

3.2.2. 编写主函数

package com.xxxx.demo;
public class Hello{
  public static void main(String[] args) {
    System.out.println("hello maven");
  }
}


image.png


3.2.3. cmd 下编译并运⾏

1.修改默认仓库位置:打开maven⽬录 -> conf -> settings.xml


2.添加仓库位置配置

<localRepository>E:/maven/address</localRepository>

image.png


注:仓库位置改为⾃⼰本机的指定⽬录,"/"不要写反


3.更换阿⾥镜像,加快依赖下载

<mirror> 
 <id>nexus-aliyun</id> 
 <mirrorOf>central</mirrorOf> 
 <name>Nexus aliyun</name> 
 <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

4.cmd下⾯,进⼊项⽬的根⽬录


编译java⽂件:mvn compile

上一篇: 来自情人的你》新片发布会 明道主持人工智能与未来讨论

下一篇: 词 "清音二十五弦-苏州园林留园(3)