Maven如何对远程仓库进行各种配置呢?
下文笔者讲述maven的远程仓库配置简介说明,如下所示
如:JBoss Maven
Maven可对项目进行编译、测试、打包之外
还可将项目生成的构件部署到远程仓库中
此时我们需配置pom.xml文件
配置distributionManagement元素
由于笔者身在国外,所以没有列表国内的taobao 私服,请见谅
搜索我们所需的jar包即可
远程仓库的配置
远程仓库是第三方新建的仓库,此时我们需在pom.xml中配置仓库信息即可如:JBoss Maven
<!-- 配置远程仓库 --> <repositories> <repository> <id>jboss</id> <name>JBoss Repository</name> <url>http://repository.jboss.com/maven2/</url> <releases> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> </releases> <snapshots> <enabled>false</enabled> <checksumPolicy>warn</checksumPolicy> </snapshots> <layout>default</layout> </repository> </repositories>
repository 在repositories元素下 可以使用repository子元素声明一个或者多个远程仓库 id 仓库声明的唯一id 尤其需要注意的是 Maven自带的中央仓库使用的id为central 如果其他仓库声明也使用该id 就会覆盖中央仓库的配置。 name 仓库的名称 url 远程仓库地址 该地址都基于http协议 Maven用户都可以在浏览器中打开仓库地址浏览构件。 releases和snapshots 用于控制Maven对于发布版构件和快照版构件的下载权限 需要注意的是enabled子元素 该例中releases的enabled值为true 表示开启JBoss仓库的发布版本下载支持 而snapshots的enabled值为false 表示关闭JBoss仓库的快照版本的下载支持 根据该配置 Maven只会从JBoss仓库下载发布版的构件,而不会下载快照版的构件。 layout 元素值default表示仓库的布局是Maven2及Maven3的默认布局 而不是Maven1的布局。基本不会用到Maven1的布局 其他 对于releases和snapshots来说 除了enabled 它们还包含另外两个子元素updatePolicy和checksumPolicy 元素updatePolicy 用来配置Maven从远处仓库检查更新的频率 默认值是daily 表示Maven每天检查一次 其他可用的值包括 never-从不检查更新 always-每次构建都检查更新 interval:X-每隔X分钟检查一次更新(X为任意整数)。 元素checksumPolicy 用来配置Maven检查校验和文件的策略 当构建被部署到Maven仓库中时,会同时部署对应的检验和文件 在下载构件的时候,Maven会验证校验和文件 如果校验和验证失败,当checksumPolicy的值为默认的warn时,Maven会在执行构建时输出警告信息 其他可用的值包括 fail-Maven遇到校验和错误就让构建失败 ignore-使Maven完全忽略校验和错误
远程仓库的认证
公共的远程仓库无须认证就可以直接访问 但我们在平时的开发中往往会架设自己的Maven远程仓库 出于安全方面的考虑 我们需要提供认证信息才能访问这样的远程仓库 配置认证信息和配置远程仓库不同 远程仓库可以直接在pom.xml中配置 但是认证信息必须配置在settings.xml文件中 这是因为pom往往是被提交到代码仓库中供所有成员访问的 settings.xml一般只存在于本机 在settings.xml中配置认证信息更为安全。
<settings> ... <!--配置远程仓库认证信息--> <servers> <server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> </servers> ... </settings> 参数说明: id为releases的远程仓库认证信息 Maven使用settings.xml文件中的servers元素及其子元素server配置仓库认证信息 认证用户名为admin,认证密码为admin123 settings.xml中server元素的id必须与pom.xml中需要认证的repository元素的id完全一致 此id将认证信息与仓库配置进行关联
部署构件至远程仓库
可将本地的jar包,打包至远程仓库中Maven可对项目进行编译、测试、打包之外
还可将项目生成的构件部署到远程仓库中
此时我们需配置pom.xml文件
配置distributionManagement元素
<distributionManagement> <repository> <id>releases</id> <name>public</name> <url>http://59.50.95.66:8081/nexus/content/repositories/releases</url> </repository> <snapshotRepository> <id>snapshots</id> <name>Snapshots</name> <url>http://59.50.95.66:8081/nexus/content/repositories/snapshots</url> </snapshotRepository> </distributionManagement> 参数说明: distributionManagement包含repository和snapshotRepository子元素 前者表示发布版本(稳定版本)构件的仓库 后者表示快照版本(开发测试版本)的仓库 这两个元素都需要配置id、name和url,id为远程仓库的唯一标识 注意事项: maven配置完毕后,可使用mvn clean deploy 即可部署jar至远程仓库中
配置远程仓库的镜像
如果仓库X可以提供仓库Y存储的所有内容 那么就可以认为X是Y的一个镜像 换句话说,任何一个可以从仓库Y获得的构件,都能够从它的镜像中获取 例:http://maven.java265.com/content/groups/public/ 是中央仓库http://repo1.maven.org/maven2/ 在中国的镜像 由于地理位置的因素,该镜像往往能够提供比中央仓库更快的服务 因此,可以配置Maven使用该镜像来替代中央仓库编辑settings.xml,代码如下:
<mirrors> <mirror> <id>maven.oschina.net</id> <name>maven mirror in China</name> <url>http://maven.java265.com/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> 注意事项: mirrorOf的值为central 表示该配置为中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像 用户也可以使用同样的方法配置其他仓库的镜像 id表示镜像的唯一标识符,name表示镜像的名称,url表示镜像的地址。 在日常镜像配置中,我们经常使用maven私服,并在私服中代理所有的外部仓库 此时我们就需在setting.xml中配置私服
<!--配置私服镜像--> <mirrors> <mirror> <id>nexus</id> <name>internal nexus repository</name> <url>http://192.168.8.10:8081/nexus/content/groups/public/</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> 注意事项: <mirrorOf>的值为星号 表示该配置是所有Maven仓库的镜像 任何对于远程仓库的请求都会被转至http://192.168.8.10:8081/nexus/content/groups/public/ 如果该镜像仓库需要认证,则配置一个id为nexus的认证信息即可
可用的Maven镜像仓库列表
下表是笔者收集的市面上常见的可用的maven私服列表由于笔者身在国外,所以没有列表国内的taobao 私服,请见谅
<mirror> <id>repo2</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://repo2.maven.org/maven2/</url> </mirror> <mirror> <id>ui</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://uk.maven.org/maven2/</url> </mirror> <mirror> <id>ibiblio</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url> </mirror> <mirror> <id>jboss-public-repository-group</id> <mirrorOf>central</mirrorOf> <name>JBoss Public Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public</url> </mirror> <mirror> <id>JBossJBPM</id> <mirrorOf>central</mirrorOf> <name>JBossJBPM Repository</name> <url>https://repository.jboss.org/nexus/content/repositories/releases/</url> </mirror>
jar包坐标检索方法
我们可进入MVNrepository:http://mvnrepository.com/搜索我们所需的jar包即可
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。