优秀的编程知识分享平台

网站首页 > 技术文章 正文

项目管理利器(Maven)你真的了解吗?让我来帮你入门学习

nanyue 2024-08-19 19:00:56 技术文章 7 ℃

前言

在深入了解Maven之前我们还是先看一下Maven的定义。Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需做一些简单的配置,就可以批量完成项目的构建、报告和文档的生成工作。

这里总结一下Maven的优点:

  1. Maven可以对项目依赖进行统一管理;
  2. Maven可以自动解决重复和冲突的依赖;
  3. Maven可以开发第三方插件,可以实现很多扩展能力;
  4. 推动项目标准化(包括项目结构和开发流程);

对于Maven学习,这里有几个重点是一定要有认知的,分别是:Maven配置文件(setting.xml和pom.xml)标签含义、Maven的生命周期、Maven的版本控制规则以及SNAPSHOT和RELASE版本区别、如何开发Maven插件、如何利用Maven实现工程脚手架、Maven仓库以及Maven依赖处理(自动和手动)等。

这里这次文章中我先讲一下Maven配置文件(setting.xml和pom.xml)标签含义,这也是Maven入门必须要知道的。

Maven配置文件(setting.xml)标签含义

首先我们应该知道Maven的setting文件是Maven的全局配置,而pom文件是项目配置。

  • 对于Maven而言我们首先应该知道的我们的本地仓库在哪里(默认是~/.m2/repository),同时我可以通过<localRepository>标签进行配置
    <localRepository>${user.home}/.m2/repository</localRepository>
  • 然后我在使用的时候可能需要配置远程仓库或者私服,我们可以通过<repositories>标签进行配置,同时可以指定REALSE或者SNAPSHOT版本的依赖是否失效以及本地缓存策略(always:每次构建都检查远程仓库中该依赖jar包是否有更新;daily:每天检查一次 (默认策略);interval:XXX 指定检查时间间隔,单位为分钟;never 从不检查)
<repositories>
  <repository>
  	<id>private-central</id>
    <name>maven-central</name>
    <url>http://xxxxxx/repository/maven-central/
    </url>
		<layout>default</layout>
		<releases>
  		<updatePolicy>daily</updatePolicy>
			<enabled>true</enabled>
		</releases>
		<snapshots>
  		<updatePolicy>daily</updatePolicy>
			<enabled>true</enabled>
		</snapshots>
	</repository>
</repositories>
  • 一般情况下私服需要用户名密码,我们可以这样配置(<servers>标签)
<servers>
  <server>
  	<id>private-central</id>
		<username>developer</username>
		<password>1234567890xyz</password>
	</server>
</servers>
  • 当私服没有需要的依赖时我们可以直接通过<mirrors>标签配置镜像,例如如下的阿里镜像配置
<mirror>
  <id>alimaven</id>
	<name>aliyun maven</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>private-central</mirrorOf>        
</mirror>
  • 当然我们也可以通过<pluginRepositories>标签配置插件的仓库
<pluginRepositories>
  <pluginRepository>
    <id>private-central</id>
    <url>http://xxxxxx/repository/maven-central/</url>
    <releases>
      <updatePolicy>daily</updatePolicy>
      <enabled>true</enabled>
    </releases>
    <snapshots>
      <updatePolicy>daily</updatePolicy>
      <enabled>true</enabled>
    </snapshots>
	</pluginRepository>
</pluginRepositories>
  • 同时如果我们在配置插件时希望不提供groupId,则可以在setting文件中通过<pluginGroups>标签配置即可
<pluginGroups>
  <pluginGroup>org.codehaus.mojo</pluginGroup>
</pluginGroups>
  • 当然还有像<properties>、<activation>等标签也是需要知道的

Maven配置文件(pom.xml)标签含义

首先POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。

然后pom文件我们可以将他分为这么几部分:

  • 项目信息设置(包括最常见的坐标信息、父模块&其他备注信息)
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<packaging>...</packaging>
<dependencies>...</dependencies>
<parent>...</parent>
<dependencyManagement>...</dependencyManagement>
<modules>...</modules>
<properties>...</properties>
  • 构建过程的设置
<build>...</build>
<reporting>...</reporting>

3.项目信息设置

<name>...</name>
<description>...</description>
<url>...</url>
<inceptionYear>...</inceptionYear>
<licenses>...</licenses>
<organization>...</organization>
<developers>...</developers>
<contributors>...</contributors>

4.环境设置

<issueManagement>...</issueManagement>
<ciManagement>...</ciManagement>
<mailingLists>...</mailingLists>
<scm>...</scm>
<prerequisites>...</prerequisites>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<distributionManagement>...</distributionManagement>
<profiles>...</profiles>

后面还会介绍Maven的生命周期、Maven的版本控制规则以及SNAPSHOT和RELASE版本区别、如何开发Maven插件、如何利用Maven实现工程脚手架、Maven仓库以及Maven依赖处理(自动和手动)等重点内容~

最近发表
标签列表