您的位置:首页 > 其它

Maven---leaning02

2015-10-21 21:01 127 查看
在第二节中有如下内容

双项目的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 将它添加到仓库中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: