【项目管理工具】maven快速入土

简介: 【项目管理工具】maven快速入土

Maven



一、apache背景



1、apache----软件基金会

开源软件:Dubbo、Log4j、Maven、rocketMq、Tomcat…


2、名字的由来

印第安部落的名称

a patchy server ----补丁服务


3、apache中项目的晋级之路

准备、孵化、毕业阶段


二、初识Maven



1、Maven的概念

maven是自动化构建工具


构建:是将工程编译得到的结果部署到服务器上的过程

编译:.java文件通过javac编译器,编译为.class的字节码文件

2、传统的方式

使用jar包

下载–放到lib目录下–如果引用了其他jar–继续下载

jar包版本不一致/需要升级,jar包更新


3、小知识

听到好多前辈把Maven叫做“马文”

其实应该读“枚文”


三、Maven进阶



1、仓库

有一个仓库的概念,统一管理jar包,而每一个jar用坐标来对应位置。

对一个jar包而言,文件夹+名字+版本号,可以定位到唯一jar。


本地仓库(本机上的文件夹) -> 中央仓库(maven提供) -> 远程仓库(私服)


本地仓库是否能找到jar包? 如果jar不存在,去远程仓库查找,如果远程不存在,去中央仓库查找。

如果都找不到,报错。

能够做到jar包复用,多个项目共用jar包。


2、Maven项目

快速创建JavaWeb的Maven项目


选择新建一个项目

20210427132541923.png

  • 左侧功能栏选择maven
  • SDK选择自己的jdk版本
  • 勾选创建模版,选择maven-archetype-webapp
  • next
  • 左侧功能栏选择maven
  • SDK选择自己的jdk版本
  • 勾选创建模版,选择maven-archetype-webapp
  • next20210427132616720.png


填写 groupId artifactId version (坐标三要素)

groupId 代表jar所来源的渠道,对应文件夹的名字

com.uncle


artifactId 代表项目的唯一名字 csdn-maven-test.jar

version 代表版本号 1.0 2.0 …

-SNAPSHOT(快照版本,不稳定的)

-RELEASE(发布版本,稳定的)

20210427132628641.png

  • 配置自己的Maven(最重要的一步)

选择自己下载的Maven

选择自己下载并配置好的Maven–config–settings.xml

next

20210427132642453.png

创建项目后提示是否自动引入包?

选择自动引入 - enable auto-import

也可以右键pom.xml文件,选择Reimport手动导入


!新版IDEA无法设置自动导入!


maven项目有一个约定好的目录结构

设计思想“约定优于配置” 是统一规范


src 代码总目录

分级为 main(核心代码和资源)和test(测试代码和资源)

其中main又包含 java(存放代码)和resources(存放资源)文件夹


pom.xml mvn的核心配置文件

一定有项目被打包之后所对应的坐标三要素(创建项目时填写的)

创建项目后提示是否自动引入包?

选择自动引入 - enable auto-import

也可以右键pom.xml文件,选择Reimport手动导入


!新版IDEA无法设置自动导入!


maven项目有一个约定好的目录结构

设计思想“约定优于配置” 是统一规范


src 代码总目录

分级为 main(核心代码和资源)和test(测试代码和资源)

其中main又包含 java(存放代码)和resources(存放资源)文件夹


pom.xml mvn的核心配置文件

一定有项目被打包之后所对应的坐标三要素(创建项目时填写的)


20210427132653706.png

3、maven的下载和配置


官网地址: https://maven.apache.org/download.cgi

下载 apache-maven-3.6.3-bin.zip


settings.xml是maven软件自身的配置文件


1)解压缩 -> 存放在英文路径下 -> 进入到bin文件夹

-> copy路径配置环境变量 (我的电脑右键)


2)验证 -> 命令提示符 -> 输入mvn -v (查看版本号)


  <mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>        
  </mirror>

c) 把上述地址copy到settings文件的标签下


5)在idea的user settings file选项中 找到刚才配置的文件。


6)如果出现报错,查看报错日志,Help -> show log in explorer


如果出现报错为

ERROR - #org.jetbrains.idea.maven - com.google.inject.CreationException: Unable to create injector, see

the following errors

是版本不兼容的问题 更改为3.6.1版本


4、Maven的依赖

存放到<dependencies>标签下
   1)查找依赖坐标,通过https://mvnrepository.com网站找到       
   2)以引用guava为例(google提供的使用最广泛的jar)
    <dependencies>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>28.1-jre</version>
        </dependency>
    </dependencies>
   3) 依赖有递进关系 
      当引入依赖时,默认引入它依赖的其他jar。
      项目A -> jar包B -> 相当于引入了jar包C 
   4)剔除依赖的方式
      使用<exclusions>标签, 以findbugs为例
      <exclusions>
        <exclusion>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>jsr305</artifactId>
        </exclusion>
      </exclusions> 
   5)依赖使用的范围
        构建包含的流程:编译、测试、运行、打包、安装、部署
                     compile test  package install deploy
        在右侧 maven projects标签栏中 打开项目名下面的lifecycle
        如果没有 去View - Tool windows中查找
        使用<scope>标签 放在artifactId下面
        compile缺省值  伴随着项目的整个生命周期而存在。
        provided已提供的  不需要将此依赖打包到项目最终的jar包里。
        runtime运行时使用  
          比如<scope>runtime</scope>
        test 测试时使用
        system 自定义jar包位置 (不推荐)  

5、Maven的生命周期

clean validate compile test package verify install site deploy
  1) clean 项目清理
  2) validate 校验项目的可用性
  3) compile 编译
  4) test 执行单元测试
  5) package 打包
  6) verify 校验测试结果
  7) install 安装
  8) site 网站站点文件的创建(用的非常少)
  9) deploy 部署
命令效果:
  1) compile 编译
       注意点1:再次验证mvn -v里面的java运行目录,是否是jdk所在目录
              如果不是,说明环境变量缺少JAVA_HOME的配置
       注意点2:编译时需要指定jdk的版本
              maven提供对全局jdk的配置(settings文件中<profiles>标签下)
    <profile>  
        <id>jdk-1.8</id>  
        <activation>  
            <activeByDefault>true</activeByDefault>  
            <jdk>1.8</jdk>  
        </activation>  
        <properties>    
            <maven.compiler.source>1.8</maven.compiler.source>    
            <maven.compiler.target>1.8</maven.compiler.target>    
            <maven.compiler.compilerVersion>1.8
            </maven.compiler.compilerVersion>    
       </properties>  
    </profile>    
    正式编译mvn clean compile
    编译结果出现在根目录下的target文件夹中
    执行打包 mvn clean package
    打包结果,出现了项目的jar包
    执行安装 mvn clean install (打包文件存储到本地仓库中)
    本地仓库中出现对应的文件夹和jar
    执行部署 mvn clean deploy
    首先要配置远程仓库的地址,然后将打包文件上传到远程仓库中
   2) 跳过测试阶段
     方式一: mvn package -DskipTests 虽然跳过单元测试的执行,但仍然会编译代码,不是很推荐使用
     方式二: mvn package -Dmaven.test.skip=true (最最常用的命令之一)既不会执行测试代码也不会编译。
   3) 查看依赖树
      方式一:pom.xml文件中右键 -> diagrams -> show dependencies 
      方式二:mvn dependency:tree
          功能: 更好的解决jar包冲突问题  


相关文章
|
6月前
|
Java Linux Maven
私有仓库工具Nexus Maven如何部署并实现远程访问管理界面
私有仓库工具Nexus Maven如何部署并实现远程访问管理界面
174 0
|
24天前
|
Java API Apache
除了 Maven,还有哪些工具可以管理项目的依赖和版本冲突
除了Maven,常用的项目依赖管理和版本冲突解决工具有Gradle、Ivy、Ant+Ivy、SBT等。这些工具各有特点,适用于不同的开发环境和需求。
|
3月前
|
Java Maven 容器
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
使用IntelliJ IDEA的Artifacts功能,可以将项目依赖的第三方jar包打包进jar文件中,实现双击jar包即可直接运行。
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
|
3月前
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
52 1
|
3月前
|
Java 编译器 测试技术
项目管理工具Maven的简单配置示例
【8月更文挑战第11天】这段内容介绍了如何通过Maven快速搭建并配置一个Java项目。首先需确保已安装Maven,接着可通过命令行创建一个基础项目结构,定义`groupId`、`artifactId`等基本信息。项目根目录下的`pom.xml`文件是核心配置文件,用于声明依赖库如JUnit,并配置构建插件如Maven Compiler Plugin以指定Java编译版本。最后,通过执行`mvn clean install`命令完成项目的清理与构建。这个流程适合初学者快速上手Maven项目管理。
|
4月前
|
Java jenkins 持续交付
Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试
【7月更文挑战第1天】Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试。成功后,Jenkins执行部署任务,发布到服务器或云环境。使用Jenkins能提升效率,保证软件质量,加速上线,并需维护其稳定运行。
129 0
|
6月前
|
Java Maven 开发者
Java一分钟之-Maven项目管理工具使用
【5月更文挑战第15天】Maven是Java开发的项目管理工具,用于自动化构建、依赖管理和项目信息管理。通过POM模型管理项目,依赖中央仓库。基本目录包括`src/main/java`、`src/main/resources`、`src/test/java`和`src/test/resources`。常用命令有`clean`、`compile`、`test`、`package`和`install`。面对依赖冲突、找不到依赖或编译错误,可以调整`pom.xml`或`settings.xml`。理解Maven的工作原理和解决常见问题能提升开发效率。
77 0
|
6月前
|
存储 Java 测试技术
深入 Maven:构建杰出的软件项目的完美工具
深入 Maven:构建杰出的软件项目的完美工具
|
6月前
|
Java Maven
maven管理工具使用package打包的时候无法将lib文件夹下的第三方jar包打入,上线打jar包后运行异常问题
maven管理工具使用package打包的时候无法将lib文件夹下的第三方jar包打入,上线打jar包后运行异常问题
|
6月前
|
Java Maven
【解决】maven管理工具使用package打包的时候无法将lib文件夹下的第三方jar包打入,上线打jar包后运行异常问题...
【解决】maven管理工具使用package打包的时候无法将lib文件夹下的第三方jar包打入,上线打jar包后运行异常问题...