配置maven使用nexus报这个错误该怎么解决
maven--私服的搭建(Nexus的使用)和注意的问题
私服是什么
私服,私有服务器,是公司内部Maven项目经常需要的东东,不总结一下,不足以体现出重视。Nexus是常用的私用Maven服务器,一般是公司内部使用。下载地址是http://wwwsonatypeorg/nexus/go。默认端口8081,这里我选择最新版nexus-250-04。
常用功能
Nexus常用功能就是:指定私服的中央地址、将自己的Maven项目指定到私服地址、从私服下载中央库的项目索引、从私服仓库下载依赖组件、将第三方项目jar上传到私服供其他项目组使用。
开启Nexus服务后访问url地址http://localhost:8081/nexus/(推荐使用自己的ip地址),之后登录系统,用户名密码分别是:admin/admin123
最频繁的就是点击左侧菜单栏的Repositories按钮
一般用到的仓库种类是hosted、proxy。Hosted代表宿主仓库,用来发布一些第三方不允许的组件,比如oracle驱动、比如商业软件jar包。Proxy代表代理远程的仓库,最典型的就是Maven官方中央仓库、JBoss仓库等等。如果构建的Maven项目本地仓库没有依赖包,那么就会去这个代理站点去下载,那么如果代理站点也没有此依赖包,就回去远程中央仓库下载依赖,这些中央仓库就是proxy。代理站点下载成功后再下载至本机。笔者认为,其实Maven这个自带的默认仓库一般情况下已经够大多数项目使用了。特殊情况时在配置新的仓库,指定url即可,一般熟悉ExtJS的人操作这个Nexus都没什么问题,单词不是很难,不明白的查查单词基本差不多。就是如果Sonatype公司对其做了国际化的处理就更好了。
hosted 类型的仓库,内部项目的发布仓库
releases 内部的模块中release模块的发布仓库
snapshots 发布内部的SNAPSHOT模块的仓库
3rd party 第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去
proxy 类型的仓库,从远程中央仓库中寻找数据的仓库
group 类型的仓库,组仓库用来方便我们开发人员进行设置的仓库
maven项目索引
下载Maven项目索引,项目索引是为了使用者能够在私服站点查找依赖使用的功能
保存后后台会运行一个任务,点击菜单栏的Scheduled Tasks选项即可看到有个任务在RUNNING。 下载完成后,Maven索引就可以使用了,在搜索栏输入要搜索的项,就可以查到相关的信息。例如spring-core
就可以检索出它的相关信息,包括怎么配置依赖信息。我们要想使用这个私服仓库,先在项目pom中配置相关私服信息
指定仓库
[html] view plaincopy
<repositories>
<repository>
<id>nexus</id>
<name>nexus</name>
<url>http://1921681103:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
指定插件仓库
[html] view plaincopy
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>nexus</name>
<url>http://1921681103:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
这样只有本项目才在私服下载组件
这样这个Maven项目构建的时候会从私服下载相关依赖。当然这个配置仅仅是在此项目中生效,对于其他项目还是不起作用。如果相对Maven的其他项目也生效的话。需要修改全局的settingsxml文件。
修改settingsxml为
追加激活profile
[html] view plaincopy
<activeProfiles>
<activeProfile>central</activeProfile>
</activeProfiles>
之后所有本机的Maven项目就在私服下载组件。(这样比较好)
项目的发布
[html] view plaincopy
<distributionManagement>
<repository>
<id>user-release</id>
<name>User Project Release</name>
<url>http://1921681103:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>user-snapshots</id>
<name>User Project SNAPSHOTS</name>
<url>http://1921681103:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
注意配置了还是发布项目到私服失败,原因为没有权限,会出现401错误码,原因就是权限不够。
配置权限在settingsxml
注意Respository中的id一定要和server下的id一致,切记!!否则出现权限问题。
然后运行发布
clean deploy
在控制台发布成功
然后进入到私服上的仓库中,看一下确实存在刚刚发布的项目
我们在项目的buildgradle
文件中如下定义仓库,就能使用Maven
Central了:
allprojects
{
repositories
{
mavenCentral()
}
}
注意,虽然jcenter和Maven
Central
都是标准的
android
library仓库,但是它们维护在完全不同的服务器上,由不同的人提供内容,两者之间毫无关系。在jcenter上有的可能
Maven
Central
上没有,反之亦然。
除了两个标准的服务器之外,如果我们使用的library的作者是把该library放在自己的服务器上,我们还可以自己定义特有的Maven仓库服务器。
然后在里面使用相同的方法获取一个library。
dependencies
{
compile
'comcrashlyticssdkandroid:crashlytics:224@aar'}
但是将library上传到标准的服务器与自建服务器,哪种方法更好呢?当然是前者。如果将我们的library公开,其他开发者除了一行定义依赖名的代码之外不需要定义任何东西。
首先windows —>show view —>problem 看看有没有报错
如果没有应该是本地库的问题,点开Maven Dependencies找到有问题的包删掉
之后点击工具栏的Project——>clean 清理一下
然后右键项目—>Maven—>update project,在重新部署试试。
在eclipse配置maven之前需要我们做好准备工作,如下:
1 安装jdk
2 已安装好 maven,将maven配置成功
3 下载Eclipse,解压缩安装完成,建立工作空间。
eclipse配置maven
检查eclipse的maven插件是否安装成功,如图:
若没有安装maven插件,我们需要先安装maven插件。
安装maven插件
eclipse安装插件有常用两种方式,在线方式和离线方式。这两种安装方式我建议大家使用离线方式,离线方式更加方便,简单,这两中安装方式网上的资料很多,也非常简单,我就不再累述了。给大家推荐一篇即可:
安装Eclipse Maven插件的几种方法
配置maven
配置maven安装目录
依次打开Window –> Perferences –> Maven ,展开Maven的配置界面,如上图;
然后点击Installations –> add 选择maven安装目录,这里我的Maven安装目录为D:\maven\apache-maven-323,选择你的Maven安装目录,并点击确定, 之后可以点击Apply,点击OK,即可完成。
然后, 我们在Maven的配置界面,设置User Settings
Global Settings选择maven 安装目录下conf文件夹下的settingsxml,这里我的Maven安装目录为D:\maven\apache-maven-323\conf\settingsxml,选择你的Maven安装目录,检查Local Repository 项,如果为D:/maven/repository则配置成功,否则重新配置上一步。
恭喜你,现在我们已经配置好了eclipse,下面,我们可以创建maven项目了。
创建maven项目
我们在Eclipse菜单栏中点击File->New->Other->Maven,在弹出的对话框中会看到
填写Group id和Artifact id, Version默认,Packaging默认为jar,Name,Description选填,其他的不填 。
之后点击Finish即可
4 前三步就可以创建一个简单的maven项目,如果我们想创建一个Maven的web项目,把第三步的Packaging的类型改为war,之后点击Finish即可
选择Maven Project,请选中Create a simple project(skip archetype selection),之后点击Next 。
这里面内容挺多且复杂,如果感兴趣可以关注魏艾斯的博客里面关于阿里云服务器的相关内容,可以为你提供一些参考建议,帮你快速开发程序。
0条评论