maven入门知识

xiaoxiao2025-08-08  35

一、常用构建命令

mvn compile 编译 test 测试 package 打包 clean 删除target install 安装jar包到本地仓库

二、自动创建目录骨架

1.groupId=组织名, 公司网址的反写+项目名 artifactId=项目名-模块名 version=版本号 package=代码所存在的包

三、Maven中的坐标与仓库

"构件" 通过 "坐标" 作为其唯一的标识  "仓库":            本地仓库和远程仓库         1.本地仓库是指存在于我们本机的仓库,在我们加入依赖时候,首先会跑到我们的本地仓库去找,如果找不到则会跑到远程仓库中去找。默认情况下,Maven的本地仓库默认为系统用户的 .m2 目录文件夹         2.远程仓库是指其他服务器上的仓库,包括全球中央仓库,公司内部的私服,又或者其他公司提供的公共库

"镜像仓库"     如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都胡够从它的镜像中获取。

"更改仓库位置"在conf中的settings.xml中的settings标签中设置     <localRepository>标签进行更改

四、Maven的生命周期和插件

完整的项目构建过程包括: 清理, 编译,测试, 打包, 集成测试, 验证, 部署  Maven生命周期: clean 清理项目 default 构建项目(最核心)  site 生成项目站点

五、 pom.xml用于管理项目依赖和构建过程

 

<!-- 基本设置 -->     <groupId>...</groupId>     <artifactId>...</artifactId>     <version>...</version>     <packaging>...</packaging>         打包方式 默认是jar      <dependencies>...</dependencies>     <parent>...</parent>     <dependencyManagement>...</dependencyManagement>     <modules>...</modules>     <properties>...</properties>

   <!-- 构建过程的设置 -->      <build>...</build>         <reporting>...</reporting>

   <!-- 项目信息设置 -->      <name>...</name> 项目的描述名         <description>...</description>   项目描述         <url>...</url>      项目的地址         <inceptionYear>...</inceptionYear>         <licenses>...</licenses>  许可证信息         <organization>...</organization>         <developers>...</developers>  开发人员信息         <contributors>...</contributors>

 <!-- 环境设置 -->     <issueManagement>...</issueManagement>     <ciManagement>...</ciManagement>     <mailingLists>...</mailingLists>     <scm>...</scm>     <prerequisites>...</prerequisites>     <repositories>...</repositories>     <pluginRepositories>...</pluginRepositories>     <distributionManagement>...</distributionManagement>     <profiles>...</profiles>

   pom.xml常用元素       modelVersion  指定了当前pom版本          groupId    反写的公司网址+项目名         artifactId  项目名+模块名        version     版本号      0.0.1snapshot快照   

        scope    依赖范围         optional  设置依赖是否可选       dependencyManagement   依赖管理  不会被运行

<!-- 用于继承父模块的依赖-->     <parent></parent>

    <!--定义多个模块  一起进行编译-->     <moduals>             <modual></modual>             ……     </moduals>

        <plugins>             <plugin>插件定位 </plugin>             ……         </plugins>

依赖范围 三种classpath scope compile:默认,编译、测试、运行都有效 provided:编译、测试有效 runtime:测试、运行时有效 test:测试时有效 system:编译、测试有效;与本机系统相关联,可移植性差 import:只应用在<dependencyManagement>中,表示从其他pom中继承来的依赖

依赖传递 传递依赖:a依赖b,b依赖c,则a间接依赖c,c会出现在a的依赖目录里。 排除依赖:exclution

依赖冲突           1. 短路优先        2. 先声明先优先   聚合和继承 聚合将多个项目整合到一个项目中,在这个项目中声明依赖就可以免去在其他项目中的声明过程

 

六、plugin与dependency引入的区别

dependency引入的东西

作用:代码编译/运行时所需要的东西

打包:项目打包后这些东西基本都在(一般都在)。

例如:JSON工具包GSON(com.google.code.gson),不仅开发时要用,项目运行时也要用,就需要打包进项目中;

 

plugin引入的东西

作用:插件,作为开发/编译/打包时的一种辅助工具

打包:一般不会打包进项目中。

例如:使用 maven-source-plugin 插件将API包的源码一起打包,方便发布至Maven仓库,而这个插件不会在打包后的项目中出现。

 

转载请注明原文地址: https://www.6miu.com/read-5034484.html

最新回复(0)