Maven项目依赖管理和构建私有仓库服务器和使用方法(maven项目配置仓库地址)

2023-07-23 18:01:12 阅读:

 # Maven项目依赖管理和构建私有服务器## 目录第1章Maven概述第2章Maven快速入门第3章Maven基础操作第4章Maven高手进阶第5章Maven应用第6章课程总结

# Maven项目依赖管理和构建私有服务器## 第1章Maven概述### 1-1课程概述(02:26)### 1-2 Maven简介(05:49)### 1- 3 Maven环境搭建(04:52)## 第2章Maven快速入门### 2-1 Maven项目的创建(06:08)### 2-2第一个依赖和插件(05:57)### 2- 3运行项目的两种方式(04:57)### 2-4 Batch Mode问题(03:03)

- 问题:创建Maven项目,挂死在构建项目环节

[ INFO] Generating project in Batch mode

- 原因:防火墙,阻止/延缓了访问在国外的Maven仓库.

- Maven中央仓库国内镜像配置

<mirror> <id>alimaven</id> <name>aliyun maven</name> <url> http://maven.aliyun.com/nexus/content/groups/public/ </url> <mirrorOf>central</mirrorOf> </mirror>### 2-5 Maven工具和项目的文件结构(06:08)
Maven内建变量${basedir}表示项目根目录,即包含pom.xml文件的目录; ${version}表示项目版本; ${project.basedir}${basedir}; ${project.baseUri}表示项目文件地址; ${maven.build.timestamp}表示项目构件开始时间; ${maven.build.timestamp.format}表示属性${maven.build.timestamp}的展示格式,默认值为yyyyMMdd-HHmm,可自定义其格式,其类型可参考java.text.SimpleDateFormat。  ${project.build.directory}表示主源码路径;  ${project.build.sourceEncoding}表示主源码的编码格式;  ${project.build.sourceDirectory}表示主源码路径;  ${project.build.finalName}表示输出文件名称;   ${project.version}表示项目版本,与${version}相同; ${project.xxx} 当前pom文件的任意节点的内容 ${env.xxx} 获取系统环境变量。 ${settings.xxx} 指代了settings.xml中对应元素的值。

## 第3章Maven基础操作

### 3-1 Maven基础操作-仓库(08:54)

- ◆远程仓库/中央仓库

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

- ◆本地仓库

- ◆私有服务器

### 3- 2 Maven配置(13:06)- 基础组件:配置

- ◆Maven核心组件:配置

- ◆全局配置: settings.xml

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <!-- 本地仓库配置:默认~/.m2/repository[店家推荐修改配置] --> <localRepository>${user.home}/.m2/repository</localRepository> <!-- 交互方式配置,读取用户输入信息[使用默认即可,很少修改] --> <interactiveMode>true</interactiveMode> <!-- 是否启用独立的插件配置文件,一般很少启用[默认即可,很少修改] --> <usePluginRegistry>false</usePluginRegistry> <!-- 是否启用离线构建模式,一般很少修改[如果长时间不能联网的情况下可以修改] --> <offline>false</offline> <!-- 是否启用插件groupId自动扫描[很少使用,配置插件时建议全信息配置] --> <pluginGroups> <pluginGroup>org.apache.maven.plugins</pluginGroup> </pluginGroups> <!--配置服务端的一些设置如身份认证信息(eg: 账号、密码) --> <servers> <!--服务器元素包含配置服务器时需要的信息 --> <server> <!--这是server的id(注意不是用户登陆的id) 该id与distributionManagement中repository元素的id相匹配。 --> <id>server_001</id> <!--身份鉴权令牌。鉴权/认证用户名和鉴权密码表示服务器认证所需要的登录名和密码。 --> <username>my_login</username> <!--身份鉴权密码 。鉴权/认证用户名和鉴权密码表示服务器认证所需要的登录名和密码--> <password>my_password</password> <!--鉴权/认证时使用的私钥文件位置。和前两个元素类似 私钥位置和私钥密码指定了一个私钥的路径(默认是${user.home}/.ssh/id_dsa)--> <privateKey>${usr.home}/.ssh/id_dsa</privateKey> <!--鉴权/认证时使用的私钥密码。 --> <passphrase>some_passphrase</passphrase> <!--文件被创建时的权限。如果在部署的时候会创建一个仓库文件或者目录,这时候就可以使用权限(permission)。这两个元素合法的值是一个三位数字,其对应了unix文件系统的权限,如664,或者775。 --> <filePermissions>664</filePermissions> <!--目录被创建时的权限。 --> <directoryPermissions>775</directoryPermissions> </server> </servers> <mirrors> <!-- 默认仓库配置给定的下载镜像位置 --> <mirror> <!-- 该镜像的唯一标识符。id用来区分不同的mirror元素。 --> <id>nexus aliyun</id> <!-- 镜像名称 --> <name>Nexus Aliyun</name> <!-- 该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。 --> <url>http://downloads.planetmirror.com/pub/maven2</url> <!-- 被镜像的服务器的id。 如果我们要设置了一个Maven中央仓库(http://repo.maven.apache.org/maven2/)的镜像 就需要将mirrorOf设置成central。 保持和中央仓库的id central一致。 这样就能替代中央仓库的功能了--> <mirrorOf>central</mirrorOf> </mirror> </mirrors> <proxies> <!--代理元素包含配置代理时需要的信息 --> <proxy> <!--代理的唯一定义符,用来区分不同的代理元素。 --> <id>myproxy</id> <!--该代理是否是激活的那个。true则激活代理。当我们声明了一组代理,而某个时候只需要激活一个代理的时候,该元素就可以派上用处。 --> <active>true</active> <!--代理的协议。 协议://主机名:端口,分隔成离散的元素以方便配置。 --> <protocol>http</protocol> <!--代理的主机名。协议://主机名:端口,分隔成离散的元素以方便配置。 --> <host>proxy.somewhere.com</host> <!--代理的端口。协议://主机名:端口,分隔成离散的元素以方便配置。 --> <port>8080</port> <!--代理的用户名,用户名和密码表示代理服务器认证的登录名和密码。 --> <username>proxyuser</username> <!--代理的密码,用户名和密码表示代理服务器认证的登录名和密码。 --> <password>somepassword</password> <!--不该被代理的主机名列表。该列表的分隔符由代理服务器指定;例子中使用了竖线分隔符,使用逗号分隔也很常见。 --> <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts> </proxy> </proxies> <profiles> <profile> <!-- profile的唯一标识 --> <id>test</id> <!-- 自动触发profile的条件逻辑 --> <activation /> <!-- 扩展属性列表 --> <properties /> <!-- 远程仓库列表 --> <repositories /> <!-- 插件仓库列表 --> <pluginRepositories /> </profile> </profiles> <activeProfiles> <!-- 要激活的profile id --> <activeProfile>env-test</activeProfile> </activeProfiles> <activation> <!--profile默认是否激活的标识 --> <activeByDefault>false</activeByDefault> <!--当匹配的jdk被检测到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有版本不是以1.4开头的JDK。 --> <jdk>1.5</jdk> <!--当匹配的操作系统属性被检测到,profile被激活。os元素可以定义一些操作系统相关的属性。 --> <os> <!--激活profile的操作系统的名字 --> <name>Windows XP</name> <!--激活profile的操作系统所属家族(如 windows) --> <family>Windows</family> <!--激活profile的操作系统体系结构 --> <arch>x86</arch> <!--激活profile的操作系统版本 --> <version>5.1.2600</version> </os> <!--如果Maven检测到某一个属性(其值可以在POM中通过${name}引用),其拥有对应的name = 值,Profile就会被激活。如果值字段是空的,那么存在属性名称字段就会激活profile,否则按区分大小写方式匹配属性值字段 --> <property> <!--激活profile的属性的名称 --> <name>mavenVersion</name> <!--激活profile的属性的值 --> <value>2.0.3</value> </property> <!--提供一个文件名,通过检测该文件的存在或不存在来激活profile。missing检查文件是否存在,如果不存在则激活profile。另一方面,exists则会检查文件是否存在,如果存在则激活profile。 --> <file> <!--如果指定的文件存在,则激活profile。 --> <exists>${basedir}/file2.properties</exists> <!--如果指定的文件不存在,则激活profile。 --> <missing>${basedir}/file1.properties</missing> </file> </activation> <properties> <spring.Version>5.2.8</spring.Version> </properties> <repositories> <!--包含需要连接到远程仓库的信息 --> <repository> <!--远程仓库唯一标识 --> <id>codehausSnapshots</id> <!--远程仓库名称 --> <name>Codehaus Snapshots</name> <!--如何处理远程仓库里发布版本的下载 --> <releases> <!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。 --> <enabled>false</enabled> <!--该元素指定更新发生的频率。Maven会比较本地POM和远程POM的时间戳。这里的选项是:always(一直),daily(默认,每日),interval:X(这里X是以分钟为单位的时间间隔),或者never(从不)。 --> <updatePolicy>always</updatePolicy> <!--当Maven验证构件校验文件失败时该怎么做-ignore(忽略),fail(失败),或者warn(警告)。 --> <checksumPolicy>warn</checksumPolicy> </releases> <!--如何处理远程仓库里快照版本的下载。有了releases和snapshots这两组配置,POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。例如,可能有人会决定只为开发目的开启对快照版本下载的支持。参见repositories/repository/releases元素 --> <snapshots> <enabled /> <updatePolicy /> <checksumPolicy /> </snapshots> <!--远程仓库URL,按protocol://hostname/path形式 --> <url>http://snapshots.maven.codehaus.org/maven2</url> <!--用于定位和排序构件的仓库布局类型-可以是default(默认)或者legacy(遗留)。Maven 2为其仓库提供了一个默认的布局;然而,Maven 1.x有一种不同的布局。我们可以使用该元素指定布局是default(默认)还是legacy(遗留)。 --> <layout>default</layout> </repository> </repositories> </settings>

- ◆项目配置: pom.xml .

考虑到阅读体验,只展示了前100行,一共766行,查看或者翻阅所有请异步

https://gitee.com/zeus-maker/hunter/blob/master/build-tools/Maven/conf/pom_sample.xml

<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"> <!-- 1、项目基本信息配置 --> <!--父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 version。 --> <parent> <!--被继承的父项目的构件标识符 --> <artifactId /> <!--被继承的父项目的全球唯一标识符 --> <groupId /> <!--被继承的父项目的版本 --> <version /> <!--父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。 --> <relativePath /> </parent> <!--声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。 --> <modelVersion>4.0.0</modelVersion> <!--项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成, 如com.mycompany.app生成的相对路径为:/com/mycompany/app --> <groupId>asia.banseon</groupId> <!--构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;在某个特定的group ID下,artifact ID也必须是唯一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源码,二进制发布和WARs等。 --> <artifactId>banseon-maven2</artifactId> <!--项目产生的构件类型,例如jar、war、ear、pom。插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型 --> <packaging>jar</packaging> <!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号 --> <version>1.0-SNAPSHOT</version> <!--项目的名称, Maven产生的文档用 --> <name>banseon-maven</name> <!--项目主页的URL, Maven产生的文档用 --> <url>http://www.baidu.com/banseon</url> <!--项目的详细描述, Maven 产生的文档用。 当这个元素能够用HTML格式描述时(例如,CDATA中的文本会被解析器忽略,就可以包含HTML标签), 不鼓励使用纯文本描述。如果你需要修改产生的web站点的索引页面,你应该修改你自己的索引页文件,而不是调整这里的文档。 --> <description>A maven project to study maven.</description> <!--项目创建年份,4位数字。当产生版权信息时需要使用这个值。 --> <inceptionYear /> <!--项目相关邮件列表信息 --> <mailingLists> <!--该元素描述了项目相关的所有邮件列表。自动产生的网站引用这些信息。 --> <mailingList> <!--邮件的名称 --> <name>Demo</name> <!--发送邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 --> <post>Demo@126.com</post> <!--订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 --> <subscribe>Demo@126.com</subscribe> <!--取消订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 --> <unsubscribe>Demo@126.com</unsubscribe> <!--你可以浏览邮件信息的URL --> <archive>http://localhost:8080/demo/dev/</archive> </mailingList> </mailingLists> <!--项目开发者列表 --> <developers> <!--某个项目开发者的信息 --> <developer> <!--SCM里项目开发者的唯一标识符 --> <id>HELLO WORLD</id> <!--项目开发者的全名 --> <name>youname</name> <!--项目开发者的email --> <email>youname@qq.com</email> <!--项目开发者的主页的URL --> <url /> <!--项目开发者在项目中扮演的角色,角色元素描述了各种角色 --> <roles> <role>Project Manager</role> <role>Architect</role> </roles> <!--项目开发者所属组织 --> <organization>demo</organization> <!--项目开发者所属组织的URL --> <organizationUrl>http://www.xxx.com/</organizationUrl> <!--项目开发者属性,如即时消息如何处理等 --> <properties> <dept>No</dept> </properties> <!--项目开发者所在时区, -11到12范围内的整数。 --> <timezone>+8</timezone> </developer> </developers> <!--项目的其他贡献者列表 --> <contributors> <!--项目的其他贡献者。参见developers/developer元素 --> <contributor> <name /> <email /> <url /> <organization /> <organizationUrl /> <roles /> <timezone /> <properties /> </contributor> </contributors> - 优先级

- pom.xml>settings.xmlnote>setting.xml

- 项目配置>用户配置>全局配置

- 1、项目基础信息配置- 2、项目构建环境配置- 3、项目仓库管理配置- 4、项目依赖管理配置- 5、项目报表信息配置- 6、项目部署分发配置### 3- -3 Maven软件坐标(06:25)- 基础组件: gav坐标

- ◆groupld: 项目ID,当前项目和其他项目的唯一标志.

- ◆artifactld:组件ID,当前项目中的子应用或者子组件的唯一标志 .

- ◆version: 版本号,迭代开发时标志的产品版本信息

- 扩展:版本号的意义

- 软件名称.主版本号.小版本号.阶段版本号.字母版本号

### 3- -4 Maven操作命令(08:28)
### 3- -5 Maven生命周期(04:00)- 基础组件:生命周期

- ◆clean lifecycle: 项目构建之前的清理环节

- ◆default lifecycle:项目编译和打包环节

- ◆site lifecycle: 项目报告、站点信息、发布环节

### 3- -6手工构建Maven项目(07:37)
### 3-7 MVN命令构建Maven项目(04:16)### 3- -8使用工具构建Maven项目(03:29)### 3- -9 archetype项目骨架加载慢的问题(02:57)### 3- -10自定义archetype项目骨架解决servlet版本问题(06:39)## 第4章Maven高手进阶### 4-1 Maven依赖范围管理(06:41)

- ◆什么是依赖范围?

- ◆都有哪些依赖范围?

- ◆为什么 要设置依赖范围?

### 4-2 Maven父子项目依赖传递(12:13)

- ◆什么是父子项目?

- ◆父项目 的依赖?

- ◆子项目的依赖?

### 4- -4 Maven项目常见插件(10:28)

- ◆什么是插件?

- ◆生命周期插件? .

resources/source/clean/compile

- ◆常用操作插件?

tomcat7/denpendency/jar/..

maven-antrun-plugin maven-archetype-plugin maven-assembly-plugin maven-dependency-plugin maven-enforcer-plugin maven-help-plugin maven-release-plugin maven-resources-plugin maven-surefire-plugin build-helper-maven-plugin exec-maven-plugin jetty-maven-plugin versions-maven-plugin### 4-5 Nexus私有服务器-搭建私有服务器(06:50)下载网址:https://www.sonatype.com/products/repository-oss-downloadMac本地测试直接使用brew install nexus### 4-6 Nexus私有服务器-创建私有仓库(05:50) .### 4-7 Nexus私有服务器- _依赖下载和项目发布(11:13)## 第5章Maven应用### 5-1 Maven构建JavaSE项目(04:11)

- ◆JavaSE项目的特点

- ◆Intellij IDEA构建基于Maven的JavaSE项目

- ◆JavaSE项目运行的两种方式

### 5-2 Maven构建JavaWEB项目(11:04)### 5-3 Maven依赖直接冲突的问题(06:27)
<exclusions> <exclusion> <groupId>组名</ groupId> <artifactId>冲突的包名</artifactId> </exclusion> </ exclusions>### 5- -4 Maven依赖传递冲突的问题(06:08)
## 第6章课程总结### 6-1课程总结(02:10)

- Maven基础

- 环境搭建,文件结构

- ◆项目构建,配置梳理

- ◆仓库,坐标、命令和生命周期

- Maven高级

- ◆>项目依赖的范围管理

- ◆父子项目的传递、聚合项目的管理

- 私有服务器的构建使用

- Maven应用

- ◆增强项目功能的插件

- ◆不同类型项目的构建

- ◆解决项目中的依赖冲突

## 参考资料

- [Maven项目依赖管理](

https://www.imooc.com/learn/1282)


以上就是关于《Maven项目依赖管理和构建私有仓库服务器和使用方法(maven项目配置仓库地址)》的全部内容,本文网址:https://www.7ca.cn/tg/40402.shtml,如对您有帮助可以分享给好友,谢谢。
标签:
声明