Maven---leaning02

在第二节中有如下内容

  • 双项目的class怎么引用
  • mvn骨架的快速搭建
  • pom.xml文件中的groupId,artifactId,version的理解以及dependency的理解

pom.xml文件的理解

  中央仓库[repo.maven.apache.org/maven2]:所有的jar包都在仓库中,maven加载jar包时会先从本地仓库中查找,找不到则从中央仓库中查找。

  本地仓库[默认C:\Users\XXX.m2\repository]:由于在C盘中,所以实际上仓库会很不安全,万一系统重装,那么仓库就会丢失,得重新创建,所以需要自定义本地仓库。

自定义仓库: 

  • 将XXX\apache-maven-3.3.3\conf\setting.xml复制到新的仓库目录下XXX\maven\repository
  • 修改两个setting.xml文件,添加 <localRepository>XXX\maven\repository</localRepository>
  • 测试,mvn compile,发现又重新下载相关包,并且可以观察到新的仓库中已经下载了。
<!--
 在仓库中查找该类的时候,使用的路径是groupId:artifactId:version:jar也就是说mvn install会根据这三项确定添加到仓库中的位置
 从上述描述就可以知道一个jar包的确定是由groupId:artifactId:version来决定的。
-->
<groupId>org.learning.maven</groupId>
<artifactId>maven-ch03</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<!--
 所谓的依赖就是指定从仓库中的什么地方查找jar包。
-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
</dependency>

mvn 骨架的快速创建

maven是“约定大于配置”,所以就可以根据约定快速的创建文件夹。

命令:mvn archetype:generator

这个命令就会根据maven的目录结构创建所需要的文件夹和pom.xml

执行上述命令后就会出现下述字样:

//准备工作
Choose org.apache.maven.archetypes:maven-archetype-quickstart version:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6:6
Define value for property ‘groupId’: : org.learning.maven
Define value for property ‘artifactId’: : maven-ch04
Define value for property ‘version’: 1.0-SNAPSHOT: : 0.0.1-SNAPSHOT
Define value for property ‘package’: org.learning.maven: :
Confirm properties configuration:
groupId: org.learning.maven
artifactId: maven-ch04
version: 0.0.1-SNAPSHOT
package: org.learning.maven
Y: :Y
//success
通过上述过程就可以快速搭建骨架了

注意:maven版本,groupId,artifactId,version都是需要自己写的。

简便写法:
mvn archetype:generate -DgroupId=org.learning.maven -DartifactId=maven-ch04 -Dversion=0.0.1-SNAPSHOT

双项目的引用

假设:现在我们已经创建了maven-ch01,现在想要在maven-ch02中使用maven-ch02中定义的类。

1、编辑pom.xml
2、创建src文件夹及其他相关的文件夹
3、mvn compile
可能的出错信息,找不到相关的类,因此需要添加dependency
以下信息就是相关类所在的包的pom.xml中的定义

   <!--这个实际上就是maven-01中的groupId,artifactId,version-->
   <dependency>
    <groupId>org.learning.maven</groupId>
    <artifactId>maven-ch01</artifactId>
    <version>0.0.1-SNAPSHOT</version>
   </dependency>

4、继续mvn compile,出现
[ERROR] Failed to execute goal on project maven-ch02: Could not resolve dependencies for projec
t org.learning.maven:maven-ch02:jar:0.0.1-SNAPSHOT: Could not find artifact org.learning.maven:
maven-ch01:jar:0.0.1-SNAPSHOT -> [Help 1]
也就是说,找不到上述依赖所定义的类
5、回到依赖类定义的pom.xml所在的文件夹中,执行mvn install,成功之后,再回到现在的pom.xml所在的文件夹中,执行mvn compile,就可以success了

mvn package:单纯的打包,并不会添加到本地仓库
mvn install:将jar包发布到本地仓库中,这样就可以使用dependency引进类了

所以其他的项目使用一个项目里面定义的类时,必须使用mvn install 将它添加到仓库中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值