浅谈Maven工具

举报
运气男孩 发表于 2020/11/20 23:19:33 2020/11/20
【摘要】 1、开发中遇到的问题 1、都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行? 2、为什么在我的机器上可以正常打包,而配置管理员却打不出来? 3、项目组加入了新的人员,我要给他说明编译环境如何设置,但是让我挠头的是,有些细节我也记不清楚了。 4、我的项目依赖一些jar包,我应该把他们放哪里?放源码库里? 5、这是...

Maven

1、开发中遇到的问题


1、都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行?


2、为什么在我的机器上可以正常打包,而配置管理员却打不出来?


3、项目组加入了新的人员,我要给他说明编译环境如何设置,但是让我挠头的是,有些细节我也记不清楚了。


4、我的项目依赖一些jar包,我应该把他们放哪里?放源码库里?


5、这是我开发的第二个项目,还是需要上面的那些jar包,再把它们复制到我当前项目的svn库里吧


6、现在是第三次,再复制一次吧    ----- 这样真的好吗?


7、我写了一个数据库相关的通用类,并且推荐给了其他项目组,现在已经有五个项目组在使用它了,今天我发现了一个bug,并修正了它,我会把jar包通过邮件发给其他项目组


-----这不是一个好的分发机制,太多的环节可能导致出现bug


8、 项目进入测试阶段,每天都要向测试服务器部署一版。每次都手动部署,太麻烦了。

2、什么是Maven

Maven通过一个pom(工程对象模型)文件来管理项目的代码、报告、文件的工具。


- 依赖管理

- 项目构建


项目的生命周期


clear-->编译-->测试-->打包-->部署

3、安装与使用

4、maven仓库

中央仓库-->阿里云仓库-->私服-->本地仓库


5、maven配置

配置文件范围

//表示局部配置,仅针对当前用户生效
    C:\Users\admin\.m2\settings.xml
        
    //表示全局配置,针对所有用户都生效
    C:\Program Files\apache-maven-3.6.3\conf\settings.xml

配置本本仓库目录


在settings.xml文件中配置localRepository

<localRepository>c:/repo</localRepository>


配置远程仓库

在settings.xml文件中配置mirrors,mirrors可以配置多个mirror,一个mirror代表一个远程仓库,优先按从上向下查找方式,如果阿里云仓库找不到,则从中央仓库1查找,如果找不到再从中央仓库2查找,如果还找不到,就报错。

  <mirrors>
        <!-- 阿里云仓库 -->
        <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>https://maven.aliyun.com/repository/central</url>
        </mirror>
    
        <!-- 中央仓库1 -->
        <mirror>
            <id>repo1</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo1.maven.org/maven2/</url>
        </mirror>
    
        <!-- 中央仓库2 -->
        <mirror>
            <id>repo2</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo2.maven.org/maven2/</url>
        </mirror>
    </mirrors>

pom.xml文件讲解

POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。

POM 中可以指定以下配置:

  • 项目依赖

  • 插件

  • 执行目标

  • 项目构建 profile

  • 项目版本

  • 项目开发者列表

  • 相关邮件列表信息

在创建 POM 之前,我们首先需要描述项目组 (groupId), 项目的唯一ID。

<project xmlns = "http://maven.apache.org/POM/4.0.0"
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
    <!-- 模型版本 -->
    <modelVersion>4.0.0</modelVersion>
    <!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
    <groupId>com.companyname.project-group</groupId>
 
    <!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
    <artifactId>project</artifactId>
 
    <!-- 版本号 -->
    <version>1.0</version></project>

父(Super)POM

父(Super)POM是 Maven 默认的 POM。所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)。父 POM 包含了一些可以被继承的默认设置。因此,当 Maven 发现需要下载 POM 中的 依赖时,它会到 Super POM 中配置的默认仓库 http://repo1.maven.org/maven2 去下载。Maven 使用 effective pom(Super pom 加上工程自己的配置)来执行相关的目标,它帮助开发者在 pom.xml 中做尽可能少的配置,当然这些配置可以被重写。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。