继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

嵌入式狗的JAVA之路 maven

慕移动7491742
关注TA
已关注
手记 12
粉丝 11
获赞 68

开始maven 虽然一般都是eclipse 开发,cmd命令行稍微做个了解
创建目录的两种方式:
1.archetype:gennerate 按照提示进行选择
2.archetype: gennerate -DgroupId=组织名,公司网址的反写加项目名
-DartifactId=项目名-模块名
-Dpackage= 代码所存在的包名
完整的项目构建过程包括:
clean、compile、test、package、 、validate、install
清理、编译、测试、打包、集成测试、验证、部署
注:运行package命令时,compile以及test会自动运行
maven相互独立的三个生命周期:
1.clean 清理项目
1> pre-clean 执行清理前的工作
2> clean 清理上一次构建生成的所有文件
3> post-clean 执行清理后的文件
2.default 构建项目(最核心)
compile test package install
3.site 生成项目站点(根据pom中的信息自动生成站点)
pre-site 生成站点前的工作
site 生成项目的站点文档
post-site 生成站点后的工作
site-deploy 发布生成的站点到服务器上

···
pom.xml文件的解析:
<project> : 根标签,表示约束
<modelVersion> : 指定当前pom的版本

<groupId>   : 反写的公司网址+项目名
<artifactId>    : 项目名+模块名
<version>   : 0.0.0snapshot 版本号      大版本.分支.小版本
    snapshop: 快照
    alpha   : 内部测试
    beta    : 公测
    Release : 稳定
    GA  : 正式发布
<packaging> : 压缩方式,默认为jar(jar zip pom)

<name>      : 项目描述名
<url>       : 项目地址
<description>   : 项目描述
<developers>    : 
<licenses>  : 许可信息
<organization>  :

<dependencies>  : 依赖信息
    <dependency>
        <groupId>   : 
        <artifactId>    :
        <version>   :

        <type>      :
        <scope>     :
        <optional>  : 设置依赖是否可选

        <exclusions>    : 排除依赖传递列表
            <exclusion>

<dependencyManage>: 依赖的管理
    <dependencies>
        <dependency>
<build>
    <plugins>: 插件列表
        <groupId>
        <artifactId>
        <version>
<parent>    : 用于子模块中对于父模块的继承
<modules>   : 指定多个模块,然后一起编译

···

依赖范围<scope> 其中classpath有三种: 1.编译 2.测试 3.运行
范围:1.compile: 默认,在编译测试运行时均有效;
2.provided: 在编译,测试时有效; servlet API加载
3.runtime: 在测试,运行时有效; jdbc驱动实现
4.test: 只在测试时有效; 如junit
5.system: 在编译,测试时有效,与本机系统想关联,换机子以后可能会出问题
6.import:导入,只使用在<dependencyManagement>中,表示从其他的pom中导入<dependency> 的配置

runas
compile 编译
clean package 封包
install 安装

依赖的传递性 需要将父类pom install到本地仓库中, 子类pom在<dependency>中加入
父类依赖坐标 即可调用
在<dependency>中运用<exclusions> <exclusion>来排除所不需要的父类pom

针对依赖冲突: 短路优先 声明优先
1.短路优先:谁路径最短、最快,用谁的
2.声明优先: 如果路径相同,谁先声明的, 用谁的

继承:多次使用到的依赖,比如:单元测试,没有必要在所有的项目中都引用一下,此时就可以采用继承的方式来实现,先来一个父级的POM.XML然后再继承此POM.XML。

  1. packaging 改为pom。
  2. dependencyManagement 中并不提取依赖。
  3. property中定义了junit版本号,之后可以引用。
  4. 父类parent中的main和test没有意义,可以删除。

父类pom:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

子类pom:
<parent>
<groupId>com.hongxin</groupId>
<artifactId>hongxin-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>

聚合:如果项目D依赖项目C,项目C依赖项目B,项目B依赖项目A,我们需要一个个安装这项项目,在Maven中有一种方式可以将多个项目一次性安装,这就是聚合的概念。简单讲就是,需要人工多次操作的,只要Maven能理解,一次性告诉他,他就能帮我们做这件单调烦人的事情了。——使用<modules></modules>这个标签。

<modules>
<module>../hongxin-bege</module>
<module>../hongxin-nange</module>
<module>../hongxin-shanji</module>
</modules>

http://www.mvnrepository.com/查询依赖相关信息

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP