Maven私服使用经验总结
我是使用nexus2.11.2在centos6.5上搭建的私服,以下是总结我这几天的经验。
1.当你修改pom.xml的时候,eclipse检查的是你本地仓库里的jar包,如果有了,pom.xml文件就不报错,否则报错。
2.使用私服比较方便的几个好处是,不用所有人都从网上下一大堆东西,而且有了私服,其他人都不需要上网,只要私服那台服务器可以上网就行了。
因此,你要首先保证你的私服是可以上网的。如果公司需要代理,那么在nexus管理页里,把代理设置了,具体的位置是
Administration里点server然后再里边我是如下设置的,填写自己的代理服务器IP端口跟账号密码
3.创建一个Repository group,这个是一个仓库组,可以在他的configuration里选择添加那些具体的仓库。
这里最需要的一个肯定是Central,他的镜像地址是http://repo1.maven.org/maven2/也就是maven2的主地址。
所有仓库的Download Remote Indexes,我都设置成true了。
4.自己创建一个proxy Repository,创建这个的目的是,比如我的group里只添加了一个Central,但是发现不够,我还需要其他的包
比如我这个项目里用到了CDH,但是Central这个maven仓库里没有,所以我需要建一个cdh里仓库,通过CDH的maven pom.xml文件可以知道,他的仓库地址是
https://repository.cloudera.com/artifactory/cloudera-repos/
所以我添加如下的配置
5.我添加完4里边的proxy,在将它放进3里的group里,这样3里就也有这个目录了,大家统一用3里创建的group这个仓库。
6.怎么让其他人不上网,而是从私服仓库里下载呢
1)配置自己的pom.xml添加如下配置
<!-- 设定主仓库,按设定顺序进行查找。 --> <repositories> <repository> <id>kora</id> <!--这个ID需要与你新建的组group ID一致--> <name>Kora Repository</name> <url>http://10.10.92.244:8081/nexus/content/groups/kora/</url> </repository> </repositories>
2)在maven客户端的settings.xml里添加如下配置,放在mirrors标签下边
<mirror> <id>kora</id> <mirrorOf>*</mirrorOf> <url>http://10.10.92.244:8081/nexus/content/groups/kora/</url> </mirror>
7.一些私有的jar包,在maven仓库里找不到怎么办?使用3rd party这个,第3方的jar包,他是一个hosted Repository
在这里点Artifact Upload,可以上传第3方jar包,每次我都是选择的GAV Parameters,上传后,把3rd这个也加入到第3步建立的group里,这样第3个就也有了。
8.建立的proxy没有下载对应的jar包,这个时候,你选择group,group里也不会有,但是你访问的时候,有的时候,它不会自动下载。
我的做法是,把pom.xml跟settings.xml里的仓库地址,都换成proxy的,然后加一个你想下载的jar的dependency标签,然后,让proxy下载。这样你的group里也就有了,之后再换回group.
9.我发现我的服务器上有jar包,但是maven install的时候还是提示
[ERROR] Failed to execute goal on project kora-monitor: Could not resolve dependencies for project com.kora:kora-monitor:war:1.2.6: Failure to find bitwalker:UserAgentUtils:jar:1.13 in http://10.10.92.244:8081/nexus/content/groups/kora/ was cached in the local repository, resolution will not be reattempted until the update interval of kora has elapsed or updates are forced -> [Help 1]
这是因为,我本地已经有bitwalker这个目录了,但是里边没东西,但是因为有目录,又不会从私服上下了,所以这个只要你删除本地路径,再install就可以了。
10.跟9的问题差不多,提示在服务器上找不到jar,比如oracle驱动,但是我发现,我已经上传到3rd上了,3rd下是有这个jar的,而且group里也有
但是死活就是找不到,于是我把3rd的com.oracle这个包给删了,然后打开group里居然还有com.oracle这个目录,而且里边没有jar包这就很奇怪了,
因为我是把3rd里的com.oracle目录彻底删掉的。为什么group里还有,最后我在group集合里的每个仓库里挨个查找,终于在Central里发现了com.oracle这个目录
跟group里的目录一样,光有目录没有jar包,后来我删除了这个目录,又从新在3rd里上传了带jar包的目录,问题解决了。
11.如果目录结构特别多,不想一个一个上传,可以直接把目录上传到服务器上,我的3rd目录是/usr/local/sonatype-work/nexus/storage/thirdparty
我就把我仓库里的私有jar包直接放进去,就好使了。3rd跟group里就都能看见了
12.Maven编译提示GBK乱码,而你的类是UTF-8的,那么你需要在你工程的pom.xml里添加编码格式,如下:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>