脚本宝典收集整理的这篇文章主要介绍了【Maven从入门到精通】 02-Maven 的核心概念:POM、坐标、依赖,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
POM
:Project Object Model
,项目对象模型
DOM
:Document Object Model
,文档对象模型数学中的坐标
Maven 的坐标
使用下面三个参数GAV
在仓库中唯一定位一个 Maven 工程
G
——groupId
:公司或组织域名倒序 + 项目名
<groupId>com.vectorx.maven</groupId>
A
——artifactId
:模块名
<artifactId>Hello</artifactId>
V
——version
:版本号
<version>1.0.0-sNAPSHOT</version>
Maven 工程的坐标与仓库中路径的对应关系
Maven 工程的坐标:
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.0.RELEASE</version>
仓库中路径:
orgspringframeworkspring-core4.0.0.RELEASEspring-core-4.0.0.RELEASE.jar
本地仓库:本地部署的仓库目录,为当前电脑所有 Maven 工程服务
远程仓库
目录结构
pom.xml
<?xml version="1.0"?>
<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.vectorx.maven</groupId>
<artifactId>HelloFriend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>HelloFriend</name>
<dePEndencies>
<dependency>
<groupId>junIT</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.vectorx.maven</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
HelloFriend
public class HelloFriend {
public String sayHello2Friend(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";
}
}
HelloFriendTest
public class HelloFriendTest {
@Test
public void testHelloFriend() {
HelloFriend helloFriend = new HelloFriend();
String results = helloFriend.sayHello2Friend("world");
assertEquals("Hello world! I'm John", results);
}
}
此时,我们运行mvn compile
命令,能否成功呢?
我们发现,编译失败了:
Failed to execute goal on project HelloFriend: Could not resolve dependencies for project com.vectorx.maven:HelloFriend:jar:0.0.1-SNAPSHOT: Could not find artifact com.vectorx.maven:Hello:jar:0.0.1-SNAPSHOT
即:无法解决 HelloFriend 包中的依赖,找不到 Hello 的 Jar 包
根据前面所学知识,我们知道:
而我们这里的Hello
本身是自定义的 Maven 工程,其中的坐标也是自定义的,中央仓库中是几乎不可能有的
我们希望的是 Maven 核心程序在本地仓库中寻找,并且能够找到,这就要了解下 Maven 依赖的相关知识了
Maven 解析依赖信息时会到本地仓库中查找被依赖的 jar 包
对于我们自己开发的 Maven 工程,使用mvn install
命令安装后就可以进入仓库
》》》我们实操一遍
我们注意到,install
命令,将工作空间中 Hello 的 Jar 包安装到了默认的用户家目录下
[INFO] Installing D:workspaceNOTE_MavenDemoHellotargetHello-0.0.1-SNAPSHOT.jar to C:UsersArchimedes.m2repositorycomvectorxmavenHello.0.1-SNAPSHOTHello-0.0.1-SNAPSHOT.jar
[INFO] Installing D:workspaceNOTE_MavenDemoHellopom.xml to C:UsersArchimedes.m2repositorycomvectorxmavenHello.0.1-SNAPSHOTHello-0.0.1-SNAPSHOT.pom
我们打开自己的用户家目录,确实发现了 Hello 的 Jar 包已经安装到了我们的本地仓库中
好,现在我们再次对 HelloFriend 进行编译,看下是否会成功
果然不负众望,编译成功了!
大家注意到上面的依赖信息中除了目标 jar 包的坐标还有一个scope
设置,这是依赖的范围
依赖的范围有几个可选值,我们用得到的是:compile
、test
、provided
compile & test 对比
compile & provided 对比
小结
依赖范围 | compile | test | provided |
---|---|---|---|
对主程序是否有效 | ✔️ | ❌ | ✔️ |
对测试程序是否有效 | ✔️ | ✔️ | ✔️ |
是否参与打包部署 | ✔️ | ❌ | ❌ |
以上是脚本宝典为你收集整理的【Maven从入门到精通】 02-Maven 的核心概念:POM、坐标、依赖全部内容,希望文章能够帮你解决【Maven从入门到精通】 02-Maven 的核心概念:POM、坐标、依赖所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。