Maven架构的依赖管理和项目构建

​​​​​​什么是依赖管理

第三方依赖包的管理,可以连接互联网下载项目所需第三方jar包。

自己开发的模块的管理,可以像引用第三方依赖包一样引用自己项目的依赖包。

Maven的依赖管理方式和传统方式有什么区别

传统方式:从官网手动下载jar包,并拷贝到项目的lib目录下

maven:maven的远程仓库自动连接本地仓库,并通过用户编写的pom.xml文件获取目标jar包的坐标(引入依赖)

什么是项目构建

项目构建是一个从编写源代码到编译、测试、运行、打包、部署的过程

传统项目和maven项目构建的区别

传统项目:

打开Idea编写源代码配置文件 ,对源代码进行编译,可以使用Junit 进行单元测试,把项目打成war包,部署到++Tomcat服务器++中运行。

maven项目:

maven将项目构建过程进行标准化 ,++每个阶段++都可以使用一个命令来完成。

清理 --> 编译 --> 测试 --> 报告 --> 打包 --> 部署

使用maven项目构建的好处

可以++通过命令完成项目构建++。(测试:使用mvn tomcat:run的命令来发布运行项目)

maven对每个构建阶段进行规范,有利于大型团队协作开发。

示例

一:

1、 按照约定创建 M aven项目目录(总文件夹命名为hello)
  • src/main/java ------ 存放项目的.java文件
  • src/main/resources ------ 存放项目资源文件,如spring, mybatis配置文件
  • src/test/java ------ 存放所有测试.java文件,如JUnit测试类
  • src/test/resources ------ 测试资源文件
  • target ------ 项目输出位置
  • pom.xml

创建后的样式如图:

2、在项目Hello根目录建立pom.xml并添加内容
XML 复制代码
<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>cn.tx.maven</groupId>
  <artifactId>Hello</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>Hello</name>
  
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<scope>test</scope>
		</dependency>		
		
	</dependencies>
</project>
3、创建Hell o.java 文件

在src/main/java**/cn/tx**/maven目录下新建文件Hello.java并添加内容

++注意文件夹名字不要错++

java 复制代码
package cn.tx.maven;
public class Hello {
	public String sayHello(String name){
		return "Hello "+name+"!";
	}
}
4、创建 HelloTest.java 文件

在/src/test/java**/cn/tx**/maven目录下新建测试文件HelloTest.java

++注意文件夹名字不要错++

java 复制代码
package cn.tx.maven;
import org.junit.Test;
import static junit.framework.Assert.*;
public class HelloTest {
	@Test
	public void testHello(){
		Hello hello = new Hello();
		String results = hello.sayHello("maven");
		assertEquals("Hello maven!",results);		
	}
}
5、进行maven的项目操作
  1. 打开cmd命令行,进入Hello项目根目录执行 mvn compile命令,查看根目录变化
  2. cmd 中继续录入mvn clean命令,然后再次查看根目录变化
  3. cmd 中录入 mvn clean compile命令, 查看根目录变化
  4. cmd 中录入 mvn clean test命令,查看根目录变化
  5. cmd 中录入 mvn clean package命令,查看根目录变化
  6. cmd 中录入 mvn clean install 查看仓库会把项目安装到仓库里

结果如图:

此时根目录下的target文件夹中应会出现

4.文件根目录应暂无变化

5.内容应和4相同

6.可以看到target目录下新添jar包

二:

1、按照约定创建Maven项目目录

创建方式同上,且该项目依赖示例一

HelloFriend

--src

-----main

----------java

----------resources

-----test

---------java

---------resources

--pom.xml

2、在项目HelloFriend根目录建立pom.xml
XML 复制代码
<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>cn.tx.maven</groupId>
  <artifactId>HelloFriend</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>HelloFriend</name>
  
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<scope>test</scope>
		</dependency>		
		
		<dependency>
			<groupId>cn.tx.maven</groupId>
			<artifactId>Hello</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<scope>compile</scope>
		</dependency>		
		
	</dependencies>
</project>
3、创建 HelloFriend.java 文件

在src/main/java/cn/tx/maven目录下新建文件HelloFriend.java

java 复制代码
package cn.tx.maven;
import cn.tx.maven.Hello;
public class HelloFriend {
	public String sayHelloToFriend(String name){
		
		Hello hello = new Hello();
		String str = hello.sayHello(name)+" I am "+this.getMyName();
		System.out.println(str);
		return str;
	}
	public String getMyName(){
		return "John";
	}
}
4、创建 HelloFriendTest.java 文件

在/src/test/java/cn/tx/maven目录下新建测试文件HelloFriendTest.java

java 复制代码
package cn.tx.maven;
import static junit.framework.Assert.assertEquals;
import org.junit.Test;
import cn.tx.maven.Hello;
public class HelloFriendTest {
	@Test
	public void tesHelloFriend(){
		HelloFriend helloFriend = new HelloFriend();
		String results = helloFriend.sayHelloToFriend("zhangsan");
		assertEquals("Hello zhangsan! I am John",results);		
	}
}
5、测试打包He lloFriend 项目

在HelloFriend目录下执行命令mvn package

此时会出现系统报错

系统报错提示:Could not find artifact cn.tx.maven:Hello:jar:0.0.1-SNAPSHOT,表示无法找到HelloFriend所依赖的Hello 0.0.1-SNAPSHOT.jar

故此我们需要重新构建第一个项目Hello并安装到数据仓库,在命令行Hello根目录下执行mvn clean install

对Hello项目进行清理并安装后,对HelloFriend项目再次进行打包

可以看到本次打包成功,说明HelloFriend项目已经可以加载Hello项目所打包的jar包

相关推荐
脑子慢且灵8 分钟前
[JavaWeb]模拟一个简易的Tomcat服务(Servlet注解)
java·后端·servlet·tomcat·intellij-idea·web
华仔啊1 小时前
SpringBoot 中 6 种数据脱敏方案,第 5 种太强了,支持深度递归!
java·后端
APItesterCris2 小时前
构建分布式京东商品数据采集系统:基于 API 的微服务实现方案
分布式·微服务·架构
异常驯兽师2 小时前
Spring 中处理 HTTP 请求参数注解全解析
java·spring·http
程序员在线炒粉8元1份顺丰包邮送可乐3 小时前
Docker 部署生产环境可用的 MySQL 主从架构
mysql·docker·架构
连合机器人3 小时前
晨曦中的守望者:当科技为景区赋予温度
java·前端·科技
AD钙奶-lalala3 小时前
idea新建的项目new 没有java class选项
java·ide·intellij-idea
sheji34163 小时前
【开题答辩全过程】以 12306候补购票服务系统为例,包含答辩的问题和答案
java·eclipse
hzzzzzo04 小时前
微服务网关全解析:从入门到实践
java·开发语言·微服务
纪莫4 小时前
技术面:Spring (bean的生命周期、创建方式、注入方式、作用域)
java·spring·java面试⑧股