1.maven的目录结构
- maven目录结构一般为,一个maven项目下面有一个src目录,src下面包含一个main目录,一个test目录,main目录下面又有一个java目录,java目录下面就是我们的package,test目录结构类似mian目录。
src main java package test java package resources
2.maven常用命令
- mvn -v 查看maven版本
- mvn compile 编译 (编译好了之后,项目下面会多一个target目录)
- mvn package 打包
- mvn clean 删除target
- mvn install 安装jar包到本地仓库中。一般我们在一个java文件中需要引入另外一个项目的java文件可能就需要先install,然后在pom.xml中配置引入的java文件。
3.编写第一个maven案例
- 按照maven的目录结构构建相应目录
- 编写HelloWorld.java文件。放在main目录下面的com.softeem.maven01.model包中
- HelloWorld文件源码
package com.softeem.maven01.model;public class HelloWorld{ public String sayHello(){ return "Hello World"; }}
-
编写HelloWorldTest文件在test目录下的com.softeem.maven01.model包中。主要用于测试在main中的java文件
-
HelloWorldTest.java源码
package com.softeem.maven01.model;import org.junit.*;import org.junit.Assert.*;public class HelloWorldTest{ public void testHello(){ Assert.assertEquals("Hello World",new HelloWorld().sayHello()); }}
- 配置pom.xml文件。(这里我是将struts源码中的pom.xml文件拿出来,然后配置后,粘贴到我们的项目目录下)
?xml version="1.0" encoding="UTF-8"?>4.0.0 com.softeem.maven01.model maven01-model 0.0.1SNAPSHOT junit junit 4.10
这里我们可以看到由于,我们引用了junit这个依赖,所以我们也需要在pom.xml中进行配置。
- 然后我们打开命令行工具,进入到项目目录下,进行编译(mvn compile),测试(mvn test),如果是第一次可能需要下载许多的相关构件。(成功的话,都会出现BUILD SUCESS)。
4.创建maven目录的两种方式
archetype:generate
:按照提示进行选择,这种方式和下面一样可能需要我们选择之后填写groupId...等等一些内容;- archetype:generate
-DgroupId
=组织名,公司网址的反写+项目名-DartifactId
=项目名-模块名-Dversion
=版本号-Dpackage
=代码所在包名。
###5.maven坐标,构件,仓库
- 构件:在maven中任何一个依赖,插件,项目构建的输出都被称作为构件。所有构件通过坐标作为其唯一标识。坐标就好比是我们生活中所说的地址。。等等的概念 在创建maven项目时,java包名应该与groupId,和artifactId相吻合,这样就更符合逻辑
- 仓库:管理项目的依赖
-
本地仓库和远程仓库:本地仓库如果找不到构件则会去全球中央仓库中进行查找,如果全球中央仓库也找不到,则会报错。
- 默认提供全球仓库的地址:打开maven的lib目录,找到maven-model-builder-XXX.jar,用解压软件打开,找到一个pom-4.0.0.xml,将其打开,可以看到一个url。就是全球中央仓库的地址。
-
镜像仓库:maven服务器位于国外,好在国内也有maven的镜像仓库,相对来说就更快,更稳定。
- 修改镜像仓库的位置:打开maven目录下的conf目录,找到settings.xml。打开找到mirrors标签,注释行中为了写了个demo,复制出来。
-
<!-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | <mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror> -->
maven.net.cn central central mirror in china http://maven.net.cn/content/groups/public
1. 更改本地仓库地址:maven从中央仓库中下载构件,默认存储在当前用户目录中。将本地仓库放在c盘不好,因为可能我们重装系统我们下载的构件就都没有了,所以我们要更改仓库位置。 ![](https://static.oschina.net/uploads/img/201612/28141035_cFzw.png "") - 我将仓库位置更改到E:\mavenwork\repo,打开settings.xml,将其中注释掉的复制出来,然后将路径改为,我们新建目录的路径,要用“/”分隔符。保存,然后将settings.xml复制一份到我们新建的目录中,这样以后我们更新maven的版本就不需要重新修改settings.xml。 ![](https://static.oschina.net/uploads/img/201612/28141318_y9gG.png "") - 我们来实验一下本地仓库更改成功没有?进入命令行工具->紧到maven项目目录,执行mvn clean compile 这时候maven会下载相关构件,我们进入我们新建本地仓库目录,看看效果。 ![](https://static.oschina.net/uploads/img/201612/28141721_DwzQ.png "") ![](https://static.oschina.net/uploads/img/201612/28141820_i8BX.png "") 我们可以看到,我们更改后的本地仓库中已经有了刚刚compile时候,下载的构件。