maven项目管理利器

  • 什么是maven?

基于项目对象模型(pom),可以用来管理项目的构建、报告和文档的软件项目管理工具。统一帮助我们管理第三方jar包。

  1. 下载maven

bin:mvn的运行脚本

boot:一个类加载器框架,加载自己的类

conf:配置文件

lib:所有的类库

 

  1. 配置:

电脑自己使用,就在系统变量里创建,多人使用为避免给他人造成麻烦,则使用用户变量。

系统变量添加:

M2_HOME=E:\myprograms\Maven\apache-maven-3.3.3(解压的文件目录)

PATH后面加:%M2_HOME%\bin

cmd查看安装是否成功:

mvn -v

结果:

C:\Users\CL>mvn -v

Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T19:57:37+08:00)

Maven home: E:\myprograms\Maven\apache-maven-3.3.3

Java version: 1.8.0_121, vendor: Oracle Corporation

Java home: E:\java\jdk1.8\jre

Default locale: zh_CN, platform encoding: GBK

OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"

 

----成功

 

  1. maven的hello world项目

maven目录结构:

src

    -main

       -java

         -resources

    -test

       -jave

          -package

     -resouecre

操作:

在 E:\myprograms\Maven\下建立code目录,存放代码。

 

 

  • Pom.xml

<modelVersion>4.0.0</modelVersion> :maven版本

<groupId></groupId>:包名

<artifactId></artifactId>:项目名

<version></version>:版本

 

 

  • maven命令:

mvn -v:查看版本

mvn  compile:编译

    test:测试

    package:打包

    clean: 删除target

    install:安装jar到本地仓库

archetype插件帮助创建maven规定的目录框架

方法二:mvn archetype:generate -DgroupId=com.imooc.maven04 -DartifactId=maven04-demo -Dversion-1.0.0SANPSHOT -Dpackage=com.imooc.maven04.demo

结果:

groupId: com.imooc.maven04

artifactId: maven04-demo

version: 1.0.0

 

——DgroupId:公司网址反写+项目名

-DartifactId=项目名-模块名

-Dversion=版本号

 -Dpackage=代码所存在的包名

 

package: com.imooc.maven04.demo

方法一:mvn archetype:generate +回车--》按提示创建

 

  • maven的坐标和仓库:

坐标:

eg:

<groupId>com.imooc.maven01</groupId>  公司网址反写+项目名

<artifactId>maven01-model</artifactId>    目名-模块名

<version>0.0.1SANPSHOT</version>

 

仓库:

本地仓库

远程仓库

本地找不到去远程,远程找不到,报错,找到则下载到本地。

全球仓库地址: <url>https://repo.maven.apache.org/maven2</url>

如何找全球仓库地址:

打开maven-----》

apache-maven-3.3.3\lib\maven-model-builder-3.3.3\org\apache\maven\model----》

找到pom.4.0.0.xml里就有Central  Repository

所有的pom文件都是它pom.4.0.0.xml的继承

  • 镜像仓库:

仓库是国外的,无法访问外网,国内有其镜像仓库

修改镜像仓库位置

到apache-maven-3.3.3\conf--->找settings.xml的146行

复制

<mirror>

      <id>mirrorId</id>

      <mirrorOf>repositoryId</mirrorOf>

      <name>Human Readable Name for this Mirror.</name>

      <url>http://my.repository.com/repo/path</url>

    </mirror>

修改内容为:

   <id>maven.net.cn</id>

      <mirrorOf>central</mirrorOf>

      <name>central mirror in chinese</name>

      <url>http://maven.net.cn/content/groups/public</url>

    </mirror>

 

更改仓库位置:

所有仓库文件都在C:\Users\CL\.m2\repository

eg:

settings.xml 54行复制出来,

 <localRepository>/path/to/local/repo</localRepository>

---》在maven里创建repo

----》将54行改为如下,并保存

<localRepository>E:/myprograms/Maven/repo</localRepository>

将settings.xml复制一份放到repo下,这样以后,maven版本变了不用再修改settings.xml.

  • eclipse安装maven插件和创建项目

myeclipse或者eclipse4.0以上不用安装插件。

判断方式:进入eclipse-->window->references里有无maven选项

  • maven生命周期:

完整项目构建过程:

清理、编译、测试、打包、继承测试、验证、部署

maven的三套生命周期:

clean:清理项目

pre_clean 执行清理前的工作

clean 清理上一次构建生成的所有文件

post_clean:执行清理后的所有文件

default:生成项目(最核心)

常用的:

compile、 test、 package、 install

site:生成项目站点:根据pom的信息

pre_site:生成站点前的工作

site:生成项目的站点文档

post-site 在生成项目站点后完成的工作

site-deploy:发布生成的站点到服务器上

相互独立,每个生命周期包含一些阶段,各个阶段有顺序,后面依赖前面的,但不会触发其他生命周期。

clean compile test package install

运行package这个阶段时,compile和test会顺序执行

 

maven的source插件使用,package阶段时就打包,生成**-source.jar

  <build>

  <plugins>

     <plugin>

     <groupId>org.apache.maven.plugins</groupId>

     <artifactId>maven-source-plugin</artifactId>

     <version>2.4</version>

     <executions>

     <execution>

     <phase>package</phase>

     <goals>

     <goal>jar-no-fork</goal>

     </goals>

     </execution>

     </executions>

     </plugin>

     </plugins>

    

    

  </build>

  • pom.xml的常用元素

<groupId>反写公司名+项目名</groupId>

<artifactId>项目名+模块名</artifactId>

<version>0.0.1SANPSHOT</version>第一个0,大版本号,第二个0,分支版本号,第三个0,小版本号。snapshot 快照

           alpa 内部测试

            beta 公测

            Release 稳定

            GA正式发布

<package></package>

  打包方式,默认jar

<name></name>项目描述名

<url></url>  项目地址

 

<description></description>

<developers></developers>

<licenses></license>

 

<dependencies>

<dependency>

<groupId></groupId>

<artifactId></artifactId>

<version></version>

<type></type>

<scope>test</scope>依赖的范围

<optional>true(子项目要显示指名该依赖)/false(默认:子项目可以继承该依赖)设置依赖是否可选

</optional>

<exclusions><!--排除依赖传递>

</exclusions>

</dependency>

 

</dependencies>

 

<dependencyManager>

<dependencies>

<dependency>这里的依赖不会被实际引用,主要用于定义在父模块中,子模块继承

</dependency>

</dependencies>

</dependencyManager>

 

<build>

<plugins>

<plugin>

<groupId></groupId>

<artifactId></artifactId>

<version></version>

 

</plugin>

</plugins>

</build>

 

<parent>子模块对父模块pom的继承

</parent>

<modules>

<module>

</module>

</modules>

 

  • maven依赖范围

<dependent>

<><><>

<scope>test</scope>依赖只存在于test中

<dependency>

scope的值:

compile:默认测试编译运行都有效

provided:测试编译有效

runtime:测试运行有效

test:测试范围有效,junit

system=provided与本地系统关联,项目移植,路径不一致出问题

import:

用在</dependencyManager>,用于将其他pom中的依赖以

 

 

  • 依赖的传递:

<exclusion>排序继承的依赖

依赖:短路优先

      先声明的优先

猜你喜欢

转载自blog.csdn.net/cl723401/article/details/82432470