maven

作者: 小灰灰1999 | 来源:发表于2018-07-09 12:33 被阅读10次

名词解释

自动化构建工具:将原材料(java、js、CSS、html、图片)-》产品(可发布项目)
仓库:有本地仓库,远程仓库(中央仓库镜像,私服nexus)需要什么jar包可以直接下载
中央仓库镜像:对中央仓库的分流作用,减少中央仓库压力

maven的作用

1.管理jar包
2.将项目拆分成若干个模块

maven的概念

是一个基于java平台的自动化构建工具
发展历史:make-ant-maven-gradle

清理:清空编译的结果(删除class文件,准备重新编译)
编译:java-class
测试:对项目中的关键点进行测试,可以用项目中的测试代码去测试开发代码
报告:将测试的结果进行显示
打包:将项目中包含的多个文件压缩成一个文件用于压缩或部署
安装:将打成的包放到本地仓库,共七天项目使用
部署:将打成的包放到服务器上,准备运行

通常需要下载一个jar包时,先从本地仓库下载,如果本地仓库不存在,再从中央仓库(镜像)中下载

maven配置

maven目录

maven
  -src
   --main(程序功能代码)
     -java(java代码)
     -resources(配置,资源代码)
   --test(测试代码)
     -java
    -resource
 pom.xml(项目有对象模型)
 target 目录里是对java的编译结果的存放

maven pom.xml 配置详解

<groupId>域名翻转。大项目名称</groupId>
<artifactId>子模块名</artifactId>
<version>版本名称</version>
<!--dependencies 类用来解决jar包依赖问题,在pom.xml里配置-->
<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

maven常用命令

执行目录:pom.xml所在的目录
在cmd里先到项目的pom.xml中,或者在当前目录的目录指引除,输入cmd回车

mvn compile:编译,从中央仓库中下载jar包,编译java文件,将所缺少的jar包,按照pom.xml中的配置去本地仓库查找,或者中央仓库下载
mvn test:执行测试程序
mvn package:打包,打成jar/war包
mvn install:将开发的模块放到本地仓库,供其他模块使用

依赖

依赖的有效性

maven在编译、测试、运行时,各自有一套classpath(scope的值)

compile test provided
编译 ×
测试程序(test)
部署(运行) × ×

依赖的排除

如果a包依赖域b包,当用maven引入a包时,会自动引入b包

依赖其他项目时

使用dependency模块,将另一个项目的坐标(groupid,artifactId,version)写入即可

依赖的传递性

如果a项目依赖于b项目,b项目包依赖于c包,如果希望a项目下载的时候能直接下载到c包,那么b包对c包的依赖dependency的scope的值要为compile

依赖的原则

最短路径优先:如果依赖于同一个包,版本不同,那么路径最短的先被选择
如果路径相同的话,在同一个pom.xml中后面的依赖会覆盖前面的jar包而被选择,所以严禁在一个项目中选择两个版本的jar包
如果路径相同的话,在不同pom.xml中前面jar包会优先被选择,所以严禁在一个项目中选择两个版本的jar包

创建maven工程

eclipse:new->maven project

配置maven:

window-》peference->installations(用自带或自己安装的maven)
          -》usersetting 选setting的文件位置,让程序去读setting文件

配置pom.xml

配置依赖,配置完成后,eclipse,在项目上右键->maven->update project

执行

在pom.xml右键->run as -》test/clean/install/compile

maven生命周期

clean lifecycle:清理
default lifecycle:默认
site lifecycle:站点

查找maven 的dependency代码

http://mvnrepository.com

搜索视图
选择版本
查看dependency写法

maven继承

如果a继承b,那么a继承b的所有依赖

打包方式

java-->jar包
web-->war包
父工程-->pom包

依赖的写法

父工程的dependency的写法:在之前的dependencies的依赖再加一层:<dependencyManagement></dependencyManagement>

子工程:
在pom.xml中:
1.加入父工程的坐标,(自己的坐标,如果有相同的可以不写,一般只需要写)
2.当前工程的pom.xml到父工程的pom.xml的相对路径
3.在子类中声明需要用到哪些依赖

<parent>
  <groupId>域名翻转。大项目名称</groupId>
  <artifactId>子模块名</artifactId>
  <version>版本名称</version>
  <relativePath>pom.xml到父工程的pom.xml的相对路径</relativePath>
</parent>
<dependencies>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
</dependencies>

maven的聚合

maven项目能识别的;1.本项目包含的,2:本地仓库中的
如果maven1需要调用maven2的一些东西,需要先install maven2,这种情况下可以用聚合

聚合(只能在打包方式为pom的方式中使用):
1.创建一个总工程
2.配置pom.xml

<moudles>
<!--项目根目录,可以不用关注顺序,自动会排查依赖-->
        <moulde>../maven2</moudle>
        <moudle>../maven1</moudle>
</moudles>

部署web工程

<build>
    <finalName>shterm-api</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.20.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

相关文章

网友评论

      本文标题:maven

      本文链接:https://www.haomeiwen.com/subject/tdtwuftx.html