提示:安装之前需要先确认好自己需要哪个版本的maven,避免浪费时间。
官网下载:https://maven.apache.org/download.cgi
历史版本下载:https://archive.apache.org/dist/maven/maven-3/
该值表示构建系统本地仓库的路径
表示maven是否需要和用户交互以获得输入,
如果maven需要和用户交互以获得输入,则设置成true,反之则应为false。默认为true。
作用:maven是否需要使用plugin-registry.xml文件来管理插件版本。
如果需要让maven使用文件~/.m2/plugin-registry.xml来管理插件版本,则设为true。默认为false。
作用:表示maven是否需要在离线模式下运行。
如果构建系统需要在离线模式下运行,则为true,默认为false。
当由于网络设置原因或者安全因素,构建服务器不能连接远程仓库的时候,该配置就十分有用。
作用:当插件的组织id(groupId)没有显式提供时,供搜寻插件组织Id(groupId)的列表。
该元素包含一个pluginGroup元素列表,每个子元素包含了一个组织Id(groupId)。
当我们使用某个插件,并且没有在命令行为其提供组织Id(groupId)的时候,Maven就会使用该列表。
默认情况下该列表包含了org.apache.maven.plugins和org.codehaus.mojo。
作用:一般,仓库的下载和部署是在pom.xml文件中的repositories和distributionManagement元素中定义的。
然而,一般类似用户名、密码(有些仓库访问是需要安全认证的)等信息不应该在pom.xml文件中配置,
这些信息可以配置在settings.xml中。
mirror可以拦截对远程仓库的请求,改变对目标仓库的下载地址。 mirror就是镜像,主要提供一个方便地切换远程仓库地址的途径。
当maven需要到的依赖jar包不在本地仓库时,就需要到远程仓库下载,这个时候如果maven的setting.xml中配置了镜像,而且镜像配置的规则中匹配到目标仓库时,maven就直接去镜像中配置的仓库地址进行依赖jar的下载,而不会去其他的地方进行下载。
镜像拦截规则 | 说明 |
---|---|
匹配所有远程仓库。 | |
匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。 | |
匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。 | |
匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。 |
作用:根据环境参数来调整构建配置的列表。 settings.xml中的profile元素是pom.xml中profile元素的裁剪版本。
它包含了id、activation、repositories、pluginRepositories和properties元素。这里的profile元素只包含这五个子元素是因为这里只关心构建系统这个整体(这正是settings.xml文件的角色定位),而非单独的项目对象模型设置。如果一个settings.xml中的profile被激活,它的值会覆盖任何其它定义在pom.xml中带有相同id的profile。
test
作用:手动激活profiles的列表,按照profile被应用的顺序定义activeProfile。
该元素包含了一组activeProfile元素,每个activeProfile都含有一个profile id。任何在activeProfile中定义的profile id,不论环境设置如何,其对应的profile都会被激活。如果没有匹配的profile,则什么都不会发生。
例如,env-test是一个activeProfile,则在pom.xml(或者profile.xml)中对应id的profile会被激活。如果运行过程中找不到这样一个profile,Maven则会像往常一样运行。
作用:自动触发profile的条件逻辑。
如pom.xml中的profile一样,profile的作用在于它能够在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定。
activation元素并不是激活profile的唯一方式。settings.xml文件中的activeProfile元素可以包含profile的id。profile也可以通过在命令行,使用-P标记和逗号分隔的列表来显式的激活(如,-P test)。
注:
在maven工程的pom.xml所在目录下执行help:effective-settings,点击运行,控制台会输出合并、覆盖之后最终的settings.xml文件
在maven工程的pom.xml所在目录下执行mvn help:active-profiles命令可以查看profile生效情况。
作用:远程仓库列表,它是maven用来填充构建系统本地仓库所使用的一组远程仓库。
maven里有两种仓库,本地仓库和远程仓库。 远程仓库相当于公共的仓库,大家都能看到。
本地仓库是你本地的缓存副本,只有你看的到,主要起缓存作用。
当你向仓库请求插件或依赖的时候,会先检查本地仓库里是否有。如果有则直接返回,否则会向远程仓库请求,并被缓存到本地仓库。远程仓库既可以在setting.xml中配置也可以在工程的pom.xml文件里指定。
作用:对应profile的扩展属性列表。
maven属性和ant中的属性一样,可以用来存放一些值。这些值可以在pom.xml中的任何地方使用标记${X}来使用,这里X是指属性的名称。属性有五种不同的形式,并且都能在settings.xml文件中访问。
注:如果该profile被激活,则可以在pom.xml中使用${user.install}。
作用:发现插件的远程仓库列表。
和repository类似,只是repository是管理jar包依赖的仓库,pluginRepositories则是管理插件的仓库。
maven插件是一种特殊类型的构件。由于这个原因,插件仓库独立于其它仓库。pluginRepositories元素的结构和repositories元素的结构类似。每个pluginRepository元素指定一个Maven可以用来寻找新插件的远程地址。
示例:
${user.home}/workspace/env/maven/repository true false server_id auth_username auth_pwd path/to/private_key some_passphrase 664 775 sjtugmaven sjtug maven proxy https://mirrors.sjtug.sjtu.edu.cn/maven-central/ central example_proxy false https proxy.molo.com 443 proxy_user proxy_pwd *.google.com|ibiblio.org profile_id false 9.9 Windows XP Windows x86 5.1.2600 mavenVersion 2.0.3 /path/to/active_on_exists /path/to/active_on_missing this.property.is.accessible.when.current.profile.actived maven_repository_id maven_repository_name http://host/maven default false always warn
总结:
mirror可以拦截对远程仓库的请求,改变对目标仓库的下载地址
镜像(Mirroring)是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。
为什么配置镜像?
1.一句话,你有的我也有,你没有的我也有。(拥有远程仓库的所有 jar,包括远程仓库没有的 jar)
2.还是一句话,我跑的比你快。(有时候远程仓库获取 jar 的速度可能比镜像慢,这也是为什么我们一般要配置中央仓库的原因,外国的 maven 仓库一般获取速度比较慢)
如果你配置 maven 镜像不是为了以上两点,那基本就不用配置镜像了。(私服不用配置镜像^_^)
注意:当远程仓库被镜像匹配到的,则在 jar 包将从镜像仓库获取,而不是我们配置的 repository 仓库, repository 将失去作用
repository 仓库 可以配置在pom.xml也可以配置在setting.xml的标签下
如果使用私服,并且涉及到密码,就需要配置标签,
账号密码如何匹配仓库 server的标签与response的
同理如果使用了私服镜像,server的标签需要等于mirror的(注:一般使用了私服也不要使用镜像来拦截远程仓库了,直接使用response配置的私服地址即可^_^)
私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。 有了私服之后,当 Maven
需要下载依赖时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。
私服可以解决在企业做开发时每次需要的jar包都要在中心仓库下载,且每次下载完只能被自己使用,不能被其他开发人员使用
所谓私服就是一个服务器,但是不是本地层面的,是公司层面的,公司中所有的开发人员都在使用同一个私服
我们可以使用专门的 Maven 仓库管理软件来搭建私服,比如:Apache Archiva,Artifactory,Sonatype Nexus。
安装,使用可以参考https://blog.csdn.net/m0_52994499/article/details/120640869
Maven关联私服
配置settings.xml,设置私服地址、认证等信息
nexus-public admin admin123
aliyunmaven *,!nexus-public 阿里云公共仓库 https://maven.aliyun.com/repository/public
nexus nexus-public Nexus Release Snapshot Repository http://localhost:8081/nexus/content/groups/public/ true true always false central Maven Repository Switchboard http://repo1.maven.org/maven2 nexus-public http://localhost:8081/nexus/content/groups/public/ true true
your other profile nexus
Maven项目部署到私服
执行 :mvn deploy 即可将项目部署到私服对应的仓库中,此时项目中的打包方式多为jar
但需要提前在项目的pom.xml中配置部署私服仓库位置,如下:
........ nexus-public http://localhost:8081/nexus/content/repositories/releases nexus-public http://localhost:8081/nexus/content/repositories/snapshots
Maven分模块开发
1.先创建父工程,pom.xml文件中,打包方式为pom
2.右键父工程创建子工程,dao工程和service工程打包方式为jar,web工程打包方式为war
3.每完成一个模块后需要install,如果在IDEA中install时报错(JDK版本过低),需要在父工程的pom.xml文件中配置如下代码
maven-compiler-plugin org.apache.maven.plugins 1.8 1.8 UTF-8
参考
https://blog.csdn.net/m0_51527921/article/details/126580563
https://www.cnblogs.com/iceJava/p/10356309.html
https://blog.csdn.net/m0_52994499/article/details/120640869
https://blog.csdn.net/gaoyaopeng/article/details/114986275
https://blog.csdn.net/abu935009066/article/details/124206273
上一篇:Lua脚本学习
下一篇:Go分布式爬虫学习笔记(十)