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

经理级技术人员Maven一本通

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

经理级技术人员Maven一本通

Maven

官网传送门

官方操作手册

1 How to learn Project management tools

jar包难以寻找jar包依赖的问题jar包版本冲突问题jar不方便管理项目结构五花八门项目的生命周期控制方式五花八门

2 What is maven 2.1 Maven的形成

Maven最初是为了简化 一个用Jakarta Turbine框架开发的Web项目中的构建过程的一个工具。提到项目构建,在以前比较火热的是Apache Ant这个构建脚本工具;Ant火热代表了当时它很好用,但有两个致命缺点:

有几个项目,每个项目都有自己的 Ant 构建文件,都略有不同无法管理依赖 为了解决上述需求,Maven就这样诞生了:

在具备Ant功能的基础上,打造一种可以用于构建和管理任何基于 Java 的项目的工具,提供:

标准方法(对象模型POM)对项目组成的清晰定义(结构)一种发布项目信息(部署)的简单方法一种在多个项目之间共享 JAR (中央仓库)的方法 2.2 Apache Ant对比Apache Maven Project

**Apache Ant:**软件构建工具

**Apache Maven Project:**软件项目管理和理解工具

使用Project Object Model来对软件项目管理内置了更多的隐式规则,使得构建文件更加简单内置依赖管理和Repository来实现依赖的管理和统一存储内置了软件构建的生命周期 2.3 Maven的目标

Maven 的主要目标是让开发人员在最短的时间内了解任何基于 Java 的项目。为了实现这个目标,Maven 处理了几个关注的领域:

简化构建过程提供统一的构建系统提供优质项目信息鼓励更好的开发实践 2.4 总结

Maven是一个管Java项目的管理工具,主要管构建、打包、部署(全生命周期的管理)Maven通过对象模型-Project Object Model(pom)来对软件项目管理Maven的项目结构有一些显示和隐式规则

3 Download and Install 3.1 Download

官网下载页面传送门

3.2 Install

    直接将tar.gz的文件夹解压到你指定的目录(想放哪放哪,别用中文命名)

    配置环境变量:MAVEN_HOME、PATH

    MAVEN_HOME:maven存放路径
    
    PATH:%MAVEN_HOME%/bin
    

    打开命令窗口测试是否配置成功:mvn -v

    Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
    Maven home: /Users/nan/DevelopmentEnvironment/apache-maven-3.8.3
    Java version: 1.8.0_191, vendor: Oracle Corporation,
    runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre
    Default locale: zh_CN, platform encoding: UTF-8
    OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
    

    配置全局&自定义IDEA开发工具

    打开IDEA后不要进入项目,然后打开preferences->Build->Build Tools->Maven

4 Maven四大特性 4.1 依赖管理系统

**依赖:**你的项目引入了那些jar包,无论是开源的还是不开源的,这些jar就是你项目的依赖,你的项目依赖于他们才能用,比如jdbc、fastjson、jetty、slf4j等

**原来依赖咋引入:**最初这些东西需要我们自己去网上找,然后下载下来、复制到项目中然后构建到项目当中去

**现在Maven咋引入依赖:**Maven的依赖管理相当于它做了一个公共平台,jar包提供商将下载地址托管到这个平台,使用者直接在一个统一的地方去下载各式各样的依赖,找依赖、管依赖等繁琐步骤maven给你干了,你只管确定自己要用谁家的哪个东西、哪个版本,直接通过maven提供的坐标地址下揍中咧,坐标格式如下:


    
	
    
		com.talent.core
    
		Anyonelse-core
        
        ${anyonelse_version}
    
    
    
		com.talent.core
		Anyonelse-core
		${anyonelse_version}
	

总结

原来你跑个一个手续要去1W个地方用时10年,现在一个手机上的APP1个小时就能把事全干了原来要在项目里建一个libraries,然后把四处淘换来的jar粘进去,再右键导入自从有了Maven!妈妈再也不用担心我找不着jar包以及项目存一堆jar而导致项目过大

4.2 多模块构建

商业项目的业务往往多而咋,这个时候我们在架构层面就可能会按controller、model、services、impl、mapper、来进行模块级分层;或者根据业务分类进行模块切分,管走道的一个模块、睡觉的一个模块、拉屎的一个模块

Maven同样支持这种多模块结构,只需定义一组聚合POM(对象模型),并在配置中声明爹跟儿子之间的关系就行,这个时候儿子自动继承他爹的所有配置项;声明爹跟儿子关系的配置这么写:


    
	  PRODUCT-LES
    PRODUCT-LES1
    PRODUCT-LES2
    ...

总结

标签清晰的声明了父子关系,儿子再也不用担心不知道上哪要钱去了

4.3 统一项目结构

开发工具是有好多种的,如eclipse、MyEclipse、spring、idea…;不同开发工具具有一些自有的目录结构以及一些文件、配置等,所以之前没有用maven的时候,当一个项目是用eclipse开发的时候再想用别的工具运行它就会出现各式各样、千奇百怪的问题,难受的一批,所以maven限制了被他托管的项目的结构;Maven项目结构如下:

my-app            -- 项目名
|-- src           -- 资源总目录
|    |-- main     -- 和src基本作用差不多
|    |   `-- java
|    |       `-- com              -- 包路径 节点1
|    |           `-- MyCompany    -- 包路径 节点2
|    |               `-- app      -- 包路径 节点3
|    |                  `-- controller -- 接口
|    |                  `-- pojo      -- 实体类
|    |                  `-- services  -- 接口类
|    |                      `-- services  -- 接口类
|    |                  `-- mapper    -- 持久层
|    |                      `-- App.java        -- 启动类
|    |   `-- resource       -- 放配置文件的
|    |   `-- webapp         -- 这是前端部分
|    |       `-- WEB-INF    -- WEB-INF是Java的WEB应用的安全目录
|    `-- test     -- 测试用例,干掉
|        `-- java
|            `-- com
|                `-- mycompany
|                    `-- app
|                        `-- AppTest.java
`-- pom.xml       -- 对象模型配置文件
4.4 建一个maven项目 5 搭建私服Nexus 5.1 nexus介绍

Nexus仅仅是私服的一种,私服是一种同中央仓库一样的远程仓库,只不过它是由自己搭建的远程仓库

用于存放一些无法从外部仓库下载的构件,例如内部的项目还能部署到私服上,以便供其他依赖项目使用为了节省带宽和时间,在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库

5.2 为什么使用

节省外网带宽建立本地内部公用仓库 5.3 安装&卸载

版本/收费/免费:Nexus Repository Manager 仓库管理有2个版本,专业版和oss版,oss版是免费的,专业版是收费的,我们使用oss版。

Nexus依赖Java环境

官网传送门

官方下载传送门

Docker Hub

官方安装文档

安装

将下载好的tar.gz的包解压到指定目录Windows系统需要配置环境变量

Path:nexus/bin ./nexus start启动

startstoprestartforce-reload 访问http://localhost:8081验证是否启动是否成功

默认用户名和密码存放文件的地址:/Users/nan/Downloads/latest-unix/sonatype-work/nexus3/admin.passwordroot:adminpwd:admin.password文件内 根据提示修改默认密码

5.4 使用详解仓库分类 hosted(宿主仓库)

保存中央仓库里没有的资源(jar)

自己开发的包第三方但是不开源的包 proxy(代理仓库)

代理远程仓库,通过nuxus访问其他公共仓库,比如maven官方、jboos… 仓库组(group)

将多个仓库组成一组,简化配置仓库组不能保存资源,属于设计性仓库 添加宿主仓库

仓库分为release版及snapshot版

向仓库组中添加自己创建的仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tzz995qh-1644558461948)(/Users/nan/Library/Application Support/typora-user-images/image-20211101181804313.png)]

手动上传包

如需链接私服下载

配置本地Maven的配置文件

添加server添加mirror具体配置如下配置


 

	nexus-zhgc
	aaa
	bbb



    
        nexus-zhgc
        central
        http://localhost:8081/repository/maven-public/
    


 default_profile
 
   
   
     
     zhanglonghao_repo
     
     zhanglonghao_repo
     
     
       
       true
       
            never
            
            warn
          
        
        
          
          true
          
          always
          
          warn
        
        
        http://maven.zhanglonghao.work:8081/nexus/content/groups/public
        
        default
      
    
    
      
        
        maven-net-cn  
        Maven China Mirror  
        http://maven.zhanglonghao.work:8081/nexus/content/groups/public  
          
          true  
          
          
          true  
              
        
     

  






  default_profile

资源自动上传私服

上传资源时需要提供

自己项目打好的包要传到私服中那个宿主仓库中在对应的pom中添加如下配置

	

  		
		
      	
			zhgc-release
      	
			http://10.10.1.104:8931/repository/zhgc-release/
		
  		
		
			zhgc-snapshots
			http://10.10.1.104:8931/repository/zhgc-snapshots/
		
	

6 常见报错解决方案
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/737580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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