回想之前不用maven的時候,我們用eclipse原始的專案骨架在建置專案時,在工程目錄下往往有一個lib資料夾用來存放工程所需jar文件,每次建造一個新工程時都會有這樣一個lib資料夾。然後將jar複製進lib資料夾配置路徑,很顯然有大量的重複工作,而且不同專案所用jar包不盡相同,需要我們慢慢去分辨。而後我們用了專案管理工具例如svn或是git,我們需要把大量的jar檔案引入程式碼庫,這也不是一件很適合的事。
而maven能夠幫我們解決這些問題,maven倉庫是專門用來存放jar檔案的位置(也可以用來存放項目war,zip,pom等文件)。 maven倉庫中為每個jar檔案分配了一個座標,例如jstl的jar套件:
<groupid>javax.servlet</groupid> 组ID <artifactid>jstl</artifactid> 构建ID ... 其余属性后续介绍
這樣做的話,maven能很方便的進行專案依賴版本的控制。簡單說maven倉庫就是幫我們統一管理專案構件。
專案建置的查詢路徑:先查詢本地倉庫,找不到就會查詢中央倉庫,沒找到就會報錯。中央倉庫位址有:
私服nexus用
#推薦使用
##上面三個是較為常見的,也是專案中使用較多的,但是由於下載速度太慢,且倉庫的jar檔案不完整,實際企業開發需要我們搭建私服倉庫。
點擊下載,密碼:1ar1
#點選右上角Login登陸,初始帳號為admin,密碼是admin123 登陸成功可修改帳號密碼,自己找。
點擊左邊的導覽Respositories。
3.
新增自己代理程式的遠端庫,有時候我們的專案需要引進一些特殊的jar文件,例如Jboss的某些jar包,這時候也可以在私服中代理該遠端倉庫:
不再需要設定遠端倉庫:
<repository> <id>jboss</id> <name>JBoss Repository</name> <url>;/url> <releases> <updatepolicy>daily</updatepolicy><!-- never,always,interval n --> <enabled>true</enabled> <checksumpolicy>warn</checksumpolicy><!-- fail,ignore --> </releases> <snapshots> <enabled>false</enabled> </snapshots> <layout>default</layout> </url></repository>
4.使用nexus搭建區域網路私服的使用,上面提到的一些特殊的商业性质相关的jar文件,比如oracle的驱动包,ojdbc.jar并不支持远程下载,这时候可以将我们本地下载好的jar包上传到私服。
注意GAV设置要与你pom.xml中一致,上传后添加到Artifacts点击上传即可:
5.由于私服仓库数量过多,导致配置复杂度提高,所以需要用到上述的group类型仓库:
切记点击刷新,刷新后点击唯一的一个group仓库,点击配置Configuration就可以看到刚才我们手动添加的代理仓库,然后将代理仓库添加到组仓库,这样依赖,项目中之需要配置组仓库的url就可以访问多个私服仓库。
在上述步骤完成后,即可在项目中引用私服,pom.xml中改变默认下载仓库url:
指定私服仓库,我的ip是170,不要全盘复制
<repositories> <repository> <id>nexus</id> <name>nexus</name> <url>http://192.168.1.170:8081/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
指定插件仓库
<pluginrepositories> <pluginrepository> <id>nexus</id> <name>nexus</name> <url>http://192.168.1.170:8081/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginrepository> </pluginrepositories>
配置好之后就可以从私服下载依赖包了。但是这种方式只能在改项目中起作用,每次配置项目都需要写两遍,为了将懒人模式进行到底,我们还可以指定全局的私有仓库。
找到maven文件的中的使用nexus搭建區域網路私服文件
在使用nexus搭建區域網路私服中添加配置:
在profiles>标签下添加
<profile> <repositories> <id>central</id> <name>central</name> <url>http://192.168.1.170:8081/nexus/content/groups/public/</url> <layout>default</layout> <releases> <enabled>true<enabled> </enabled></enabled></releases> <snapshots> <enabled>true<enabled> </enabled></enabled></snapshots> </repositories> </profile>
配置好之后激活profile
<activeprofiles> <activeprofile>central</activeprofile> </activeprofiles>
这样一来,这台电脑上所有maven项目下载jar文件时都会先访问局域网170的电脑。
-----------------------------------windows配置私服完毕-----------------------------------
扩展:setting,xml中各标签的意义:
servers(服务器)
<servers> <server> <id>server001</id> <username>my_login</username> <password>my_password</password> <privatekey>${usr.home}/.ssh/id_dsa</privatekey> <passphrase>some_passphrase</passphrase> <filepermissions>664</filepermissions> <directorypermissions>775</directorypermissions> <configuration></configuration> </server> </servers>
id与pom.xml中distributionManagement的id保持一致,服务器标识
username和password表示服务器认证需要的用户民和密码
privateKey, passphrase一组密钥 (不常用)
filePermissions, directoryPermissions如果在部署的时候会创建一个仓库文件或者目录,这时候就可以使用权限(不常用)
2.mirrors(镜像)
<mirrors> <mirror> <id>planetmirror.com</id> <name>PlanetMirror Australia</name> <url>;/url> <mirrorof>central</mirrorof> </url></mirror> </mirrors>
设置一个中央仓库的镜像,看仓库分类,也是远程仓库的一种配置方式。
3.profiles(构建环境)
这个可能比较难理解,maven权威指南一书中这样说:
Profile能让你为一个特殊的环境自定义一个特殊的构建;
构建环境的两个例子是产品环境和开发环境。当你在开发环境中工作时,你的系统可能被配置成访问运行在你本机的开发数据库实例,而在产品环境中,你的系统被配置成从产品数据库读取数据。Maven能让你定义任意数量的构建环境(构建profile),这些定义可以覆盖pom.xml中的任何配置。
简单理解就是你可以先profile中先构件好项目运行的环境,比如预设了A环境实在开发中使用,而实际上线是B环境,那么在上线的时候我们不需要一个个修改pom.xml中的配置,只需要激活改profile即可。
4.activation(激活构建环境 )
<activation> <activebydefault>false</activebydefault> <jdk>1.5</jdk> <os> <name>Windows XP</name> <family>Windows</family> <arch>x86</arch> <version>5.1.2600</version> </os> <property> <name>mavenVersion</name> <value>2.0.3</value> </property> </activation>
指定profile中配置的环境在什么时候开始生效
5.activeProfiles(激活了的profile)
<activeprofiles> <activeprofile>env-test</activeprofile> </activeprofiles>
在使用nexus搭建區域網路私服最后的一个标签,表示env-test这个profile已被激活
以上是使用nexus搭建區域網路私服的詳細內容。更多資訊請關注PHP中文網其他相關文章!