maven

本文详细介绍了Maven的安装、配置、项目构建流程、依赖管理、仓库优化、Eclipse集成及父子项目设置。涵盖了Maven的下载、目录结构、本地仓库配置、Maven项目创建、版本管理、JDK设置,以及父子项目如何实现依赖共享。
摘要由CSDN通过智能技术生成

1 Maven安装

1.1 下载

https://maven.apache.org/download.cgi

左边有Download或中间也有Download提示,点击
在这里插入图片描述

下拉,window系统选择下载后缀bin.zip的,一定是后缀bin.zip的,这是一个解压包
在这里插入图片描述

1.2 目录

Maven目录结构
bin:含有mvn运行的脚本
boot:含有类加载器框架
conf:含有setting.xml配置文件
lib:含有Maven运行时需要的Java类库

1.3 配置

1.MAVEN_HOME=apache-maven-3.6.3
2.PATH=;%MAVEN_HOME%\bin

检查安装配置是否正确
cmd mvn -v
如果出现以下信息则表示安装配置成功
在这里插入图片描述

1.4 修改私服

修改 conf/settings.xml中的标签

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

1.5 修改插件存储

E:\maven\download

<localRepository>E:\maven\download</localRepository>

1.6 修改Java版本

默认支持java8,如果用其他版本就需要修改在这里插入图片描述

2 介绍

Maven是跨平台的项目管理工具,主要基于Java平台的项目构建
依赖管理

2.1 项目构建过程

项目构建过程包括:

[清理]->[编译]->[测试]->[打包]->[部署]

2.2 依赖管理

依赖指的是项目中jar文件之间的相互依赖,
依赖管理值得就是采用Maven来管理项目中需要的jar文件
Meaven管理的方式就是“自动下载项目中需要的jar文件”
统一管理jar之间的依赖关系

2.3 Maven的好处

目前的方式在开发中存在的问题
1)一个项目就是一个工程
如果项目非常大,就不适合继续采用package来划分模块,
最好是每一个模块对应一个工程

2)项目中需要的jar文件必须手动“复制”,“粘贴”到工程的
/WEB-INF/lib目录下,同样的jar文件重复出现在不同的项目工程中
浪费存储空间,让工程比较臃肿
借助Maven可以将jar文件仅仅保存在“仓库”中,在工程“引用”即可

3)jar文件需要提前准备好,到官网下载
不同技术的官网提供jar下载的形式是不同的

统一的规范将开源的jar文件存在Maven的中央仓库

3 构建Maven项目

3.1 项目的目录约定

项目名
|
|—src
|       |—main
|       |       |—java                 主程序的.java文件
|       |       |—resources        跟主程序相关的资源文件
|       |—test
|       |—java                     测试程序的.java文件
|       |—resource              资源文件
|
|—target                        工程构建信息输出
|—pom.xml                    工程信息
|

3.2 手动创建Maven工程

基本命令

1)mvn clean:清理
2)mvn compile:编译主程序 
3)mvn test-compile:编译测试程序
4)mvn test:执行测试程序
5)mvn package:打包
6)mvn install:安装 
注意:运行Maven命令时一定要在工程的pom.xml文件路径下

构建过程

1.清理,将生成的target目录删除
2.编译,将Java源程序生成class字节码问啊进
3.测试:自动测试,调用junit程序(以XxxTest命名)
4.报告:测试程序执行的结果
5.打包:web工程打成war包,java工程打成jar包
6.安装:Maven项目特有非概念,将jar包复制到“仓库”
7.部署:将web工程生成的war包复制到tomcat的webapps中

1.新建文件夹 maven-workspace,进入后输入以下语句
E:\maven-workspace> mvn archetype:generate -DarchetypeCatalog=internal
第一次会等待很长时间,因为正在下载安装jar包
完成后出现以下即可
在这里插入图片描述
也可以直接输入 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false 构建
2.选择数字进行不同项目的创建

(java工程) 
7: internal -> org.apache.maven.archetypes: maven-archetype-quickstart ( An archetype which contains a sample Maven project.)

(web工程) 
10: internal -> org.apache.maven.archetypes: maven-archetype-webapp ( An archetype which contains a sample Maven Webapp project.)

3.接下来就是一些命名
Define value for property ‘groupId’: com.ds
Define value for property ‘artifactId’: maven01
Define value for property ‘version’ 1.0-SNAPSHOT: : 0.0.1-SNAPSHOT
Define value for property ‘package’ com.ds: : com.ds
Confirm properties configuration:
groupId: com.ds
artifactId: maven01
version: 0.0.1-SNAPSHOT
package: com.ds
Y: : y
最后显示 BUILD SUCCESS,就表示成功,并在目录下生成一个maven项目

可以直接简化
mvn archetype:generate -DgroupId=com.ds -DartifactId=maven1 -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.01-SNAPSHOT

archetype:generate 表示创建项目
-DgroupId 项目包名: com.ds
-DartifactId 项目名称: maven1
-DarchetypeArtifactId 项目类型: maven-archetype-quickstart
-Dversion 版本号: 0.0.1-SNAPSHOT
-DinteractiveMode:false 表示前面参数都给了,就不用一个一个地输入了

4.运行
控制台输入java -cp target/maven1-0.0.1.jar com.ds.App

4 优化

4.1 仓库

本地仓库
当前系统上部署的仓库目录
为当前系统中的Maven工程服务

远程仓库

1.中央仓库:
架构Internet上,为全世界的Maven工程服务
https://repo.maven.apache.org/maven2

2.中央仓库镜像
为了分担中央仓库的流量,提升用户访问速度

3.私服:
搭建在局域网环境中,为局域网范围内的Maven工工程服务

仓库中保存的内容
1.Maven自身所需要的插件
2.第三方框架或工具的jar文件
3.我们自己开发的Maven工程对应的jar文件

修改本地仓库

1.默认本地仓库位置:~\.m2\repository
~表示当前用户的家目录
 例如:C:\Users\DELL0\.m2\repository

 2.指定本地仓库位置的配置信息文件
 apache-maven-3.6.3\conf\settings.xml

3.在配置信息文件中,在settings标签内添加以下内容
<localRepository>E:/maven-repository</localRepository>
修改下载文职
补充:
镜像仓库修改
在配置信息文件中,在mirrors标签内添加以下内容
 <mirror>
  <id>nexus-aliyun</id>
  <mirrorOf>central</mirrorOf>
  <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

5 Eclipse设置Maven

5.1 Maven路径设置

菜单->Window->Preferences->Maven->Installations->
点击add,设置

 c:\apache-maven-3.6.3

5.2 设置仓库

菜单->Window->Preferences->Maven->User Settings->
Global Settings 和 User Settings都使用

C:\apache-maven-3.6.3\conf\settings.xml

点击一下Reindex,确保 local Repository为:

E:/maven-repository

6 Eclipse建Maven项目

6.1 新建java项目

菜单->File->New->Other->Maven->Maven Project
在这里插入图片描述
点击next
在这里插入图片描述
选择 maven-archetype-quickstart
在这里插入图片描述
Group Id: 包名
Artifact Id: 项目名
然后点击Finish

6.2 添加jar包

双击pom.xml,点击dependencies
在这里插入图片描述
点击Add,弹出选择窗口
在中间 Enter GroupId, artifactId or sha1 prefix or pattern(*)… 这个地方输入mysql,下面就会出来被搜索到的mysql-connector-java
选中它,并点击ok
在这里插入图片描述
在App.java中测试

package com.ds;

/**
 * Hello world!
 *
 */
public class App {
	public static void main(String[] args) {
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			System.out.println("加载驱动成功");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

	}
}

倘若在给maven项目添加jar中无法搜索到mysql jar包,那么可以按照如下行为操作一遍
菜单->Window->Show View->Other->Maven->Maven Repositories->Local Repository->Local Repository(右击)->Rebuild Index
在这里插入图片描述

6.3 新建web项目

菜单->File->New->Other->Maven->Maven Project->next
在这里插入图片描述
选中的是maven-archetype-webapp,点击next
在这里插入图片描述
点击finish,项目建完发现报错

右键项目->properties->Java Build Path->Libraries->Edit->Workspace default
JRE或Alternate JRE>Finish
此时会多一个test包
这个时候,还存在index.jsp会 报错的问题。 这个问题的解决办法是添加servlet.jar包。
通过pom.xml添加jar

7 修改JDK

7.1 局部

在工程的pom.xml文件中指定

<build>
<plugins>
	<plugin> 
		<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-compiler-plugin</artifactId>
		<version>3.6.1</version> 
		<configuration>
			<source>1.8</source>
			<target>1.8</target>
		</configuration> 
	</plugin>
</plugins>
</build>

7.2 全局

在C:\apache-maven-3.6.3\conf\settings.xml文件中,在profiles标签内添加以下内容

<profile>
	<id>jdk-1.8</id> 
	<activation>
		<activeByDefault>true</activeByDefault>
		<jdk>1.8</jdk>
	</activation> 
	<properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
	</properties> 
</profile>

8 父子项目

8.1 介绍

通过 maven 可以创建父子-聚合项目。 所谓的父子项目,即有一个父项目,有多个子项目。
这些子项目,在业务逻辑上,都归纳在这个父项目下,并且一般来说,都会有重复的jar包共享。
所以常用的做法会把重复的 jar 包都放在父项目下进行依赖,那么子项目就无需再去依赖这些重复的 jar 包

8.2 创建父项目

菜单->File->New->Other->maven-Maven Project->Next
选择 Create a simple project. 然后点击Next
在这里插入图片描述
填写项目信息
在这里插入图片描述
修改pom.xml:
将默认是 jar, 修改为pom

<packaging>pom</packaging>

增加 hutool jar 包的依赖,用于后来子项目里观察对其的调用

在这里插入代码片

修改 pom.xml 之后, 右键点击项目 -> Maven -> Update Project -> OK 进行更新。 否则项目会有红×

8.3 创建子项目

接下来创建maven 子项目。 maven 子项目有叫做模块 module.
为了能够在 parentMavenProject 的基础上创建其子项目,首先右键点击 parentMavenProject, 然后点击 New -> Other -> Maven -Maven Module -> Next
在这里插入图片描述
和父项目一样,这里也勾选 Craete a simple project ( 非必须 ),然后点 Next
在这里插入图片描述
在这里插入图片描述
点击finish即可完成

测试方法
1.先在parentMaven的pom.xml中添加MySQL的jar包
2.然后在childMaven编写测试代码

@Test
	public void test1() {
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			System.out.println("加载驱动成功");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} 
	}

运行,现在看到运行效果。
就表示子项目虽然没有依赖jar包,但是通过 父项目达到了依赖的效果
其实可以通过pom.xml文件进行查看
childMaven中 表示是引用父项目 parentMavenProject

<parent>
   <groupId>com.ds</groupId>
   <artifactId>ParentMaven</artifactId>
   <version>0.0.1-SNAPSHOT</version>
</parent>

而父项目 parentMavenProject中表示其子模块是 childMavenProject,并且可以拥有多个

 <modules>
   <module>ChildMaven</module>
 </modules>

观察项目目录结构,发现 childMaven 是位于 parentMaven 下的。 所以如果将来有 childMaven1, childMaven2, childMaven3 也会放在这个目录下,方便管理
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值