栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Maven工具详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Maven工具详解

一、简介 maven是什么?

Maven本质上是一种项目管理、部署工具,提供了如下功能:

  • 项目构建
  • 文档
  • 报告
  • 依赖处理
  • SCMs
  • 发布版本
  • 包分发
创建mvn工程
mvn -B archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4

maven工具生命周期
  • 验证:验证工程是否正确
  • 编译: 将源码编译为可执行工程
  • 单元测试: 运行单元测试内容
  • 打包: 将编译后的代码打包
  • 集成测试: 如果需要,将打好的包部署在环境上
  • 检查包: 检查包
  • 包安装到本地: 将包安装到本地仓库,用于其他工程引用
  • 包部署到远程仓库: 将最终的包上传到远程仓库,共其他开发者使用
mvn clean dependency:copy-dependencies package
此命令将清理项目、复制依赖项并打包项目(当然,执行打包之前的所有阶段)。

maven pom文件标签含义

  4.0.0
 
  com.mycompany.app
  my-app
  1.0-SNAPSHOT
 
  my-app
  
  http://www.example.com
 
  
    UTF-8
    1.7
    1.7
  
 
  
    
      junit
      junit
      4.11
      test
    
  
 
  
    
       ... lots of helpful plugins
    
  
  • project pom文件顶级元素
  • modelVersion POM使用的对象模型的版本
  • groupId 工程唯一组织标识符
  • artifactId 项目生成的组件唯一名
  • version 工程版本号
  • name 工程名字,可用于文档
  • url 工程url,可用于访问文档
  • properties 属性占位符
  • dependencies 依赖项
  • build 插件相关

二、使用指南  maven基本命令 编译和测试

mvn compile #编译应用源代码
mvn test   #编译测试源码,运行单元测试用例
mvn test-compile  #仅编译测试源码
打包安装
mvn package   #打jar包
mvn install   #将jar包安装到本地仓库,在user/.m2/repository目录下
mvn site    #自定义mvn站点
mvn clean    #清理target目录下的工程包
maven其他操作 如何理解version中的SNAPSHOT?

可理解为开发分支最新代码,并不保证代码的稳定性,一般是发布版本之前的版本。例如:version 1.0-SNAPSHORT对应的发布版本就是version 1.0。

如何使用mvn插件?

类似依赖操作,需要添加到对应插件配置中,下面配置的是jdk1.5对应的编译器。

如何将资源文件打包到jar包中?

在固定目录${basedir}/src/main/resources下添加即可,测试用例中如果需要使用资源文件,只需要将资源文件放在固定目录${basedir}/src/test/resources中即可。

资源文件在jar包中的位置:/BOOT-INF/classes/。

在build时,如何从外部文件获取值填充到资源文件application.properties中?

使用resource标签,并设置filtering标签属性为true,在资源文件中通过${name}获取。如果不开启filtering标签true,则资源文件中无法获取到pom.xml文件中配置的值。

pom.xml中配置filetering:

  
    
      
        src/main/resources

        false
      
    
  

1)资源文件从pom.xml文件中获取值

  1.0-SNAPSHOT
  my-app

...
  

    hello in
  
  • 资源文件application.properties从pom文件读取值
application.name=${project.name}
application.version=${project.version}
message=${my.filter.value}
  • 执行mvn process-resources 命令后的输出:
application.name=my-app
application.version=1.0-SNAPSHOT
message=hello in

2)资源文件从外部文件中读取值

  • 创建外部文件filter.properties(src/main.filters/fiter.properties)
my.filter.value=hello out
  • pom.xml中配置需要读取的外部文件
  
    
      src/main/filters/filter.properties
    
  
  • application.properties资源文件读取外部文件值
message=${my.filter.value}
  • 执行mvn process-resources 命令后的输出:
message=hello out

3)资源文件从系统配置、命令行获取值

  • application.properties资源文件获取配置值、命令行值
java.version=${java.version}
command.line.prop=${command.line.prop}
user.home=${user.home}
  • 执行mvn process-resources "-Dcommand.line.prop=hello again" 命令后的输出:
java.version=1.8.0_211
command.line.prop=hello again
user.home=/Users/jains

Noting

1.资源文件可读取到pom.xml文件,用户settings.xml文件,外部属性文件以及系统配置文件中的值。

2.resource标签下的includes和excludes标签可以于filtering标签配置使用,用于排除、包含外部文件。

如何引入外部依赖?

    
      junit
      junit
      4.11
      test
    
  

标签表示何时使用该依赖,值可以是compile, test, and runtime。

从哪里引入依赖包?

首先从本地仓库引入,本地仓库路径:${user.home}/.m2/repository。如果本地仓库不存在需要引入的依赖包,会从远程仓库下载包到本地仓库,远程仓库默认url:

https://repo.maven.apache.org/maven2/
如何将自己的jar包部署到远程仓库?
  • 在pom.xml文件中配置远程仓库url

    
      mycompany-repository
      MyCompany Repository
      scp://repository.mycompany.com/repository/maven2
    
  
  • 在settings.xml文件中配置远程仓库登陆认证信息
...
  
    
      mycompany-repository
      jvanzyl
      
      /path/to/identity (default is ~/.ssh/id_dsa)
      my_key_passphrase
    
  
  ...

Noting

setting.xml文件中密码加密,public-key见Maven – Password Encryption

如何创建父子工程?
  • 父级pom.xml文件添加子模块、添加子包依赖

注意:需要将父级pom.xml打包方式修改为pom,如果不指定类型,默认是jar类型。



  4.0.0

  com.mycompany.app
  app
  1.0-SNAPSHOT
  app

  pom

  
    my-app
  

  • 子模块pom.xml文件添加父级依赖

  
    com.mycompany.app
    app
    1.0-SNAPSHOT
  

  com.mycompany.app.my-app
  my-app
  1.0-SNAPSHOT

注意:子模块需要修改groupId和artifactId

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/921391.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号