Maven---leaning02

来源:互联网 发布:数据透视表 生活 编辑:程序博客网 时间:2024/06/08 05:08

在第二节中有如下内容

  • 双项目的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