maven3要用什么版本的nexus3 maven

Copyright&& &&
本站文章大部份源自于网络,其余为本站原创;如果本站文章侵犯了您的权益,请点击上方链接给我们留言。【图文】Maven+Nexus安装配置使用私服详解多图_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Maven+Nexus安装配置使用私服详解多图
&&Maven的介绍 ,安装 ,使用 , pom.xml setting.xml详解 以及Nexus私服介绍和使用
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢windows下搭建Nexus3私服和基于IDEA15的Maven学习笔记
搭建Nexus私服。
首先去官网下载window下用的zip文件。。
解压之后包含下面两个文件
进入nexus下面的bin目录
在cmd命令下,执行nexus.exe /run,就可以启动成功了。
另外nexus.vmoptions是nexus的配置文件里面可以修改数据的存储路径。
我这里把路径修改为nexus-data.
重启nexus,然后目录下就多出了一个nexus-data文件,并且和之前解压出来的sonatype-work是一样的,可见之前的sonatype-work文件就是用来存储nexus数据的。
nexus-3.1.0-04\etc目录下的nexus-default.properties文件是用来配置。修改IP、端口、访问根目录的。配置成你想要的数据之后
再启动nexus,然后就可以访问http://127.0.0.1:8091/nexus-console/
安装成功后默认账户是admin具有全部权限默认密码admin123
登录之后我们就可以配置我们的仓库。
其中central库的类型是proxy,里面的URL是maven中央存储库,http://repo1.maven.org/maven2/。
Public 库的类型是group。这说明public库是一个组,而组里面是可以把你需要的库给配置进去。
而release库和snapshots库,都是host类型的,也就是我们自定义库。其中release库放的是稳定版本的jar,snapshots库是放置快照版本的jar。稍后我们会解释release和snapshots之间的区别。
下面我们配置一个自己本地库,用来放置一些我们自己第三方jar包,实际上大部分的jar包都是可以在公共库里面找到的,所以我就自己随便找一个jar为例子。
下面我们先创建一个host类型的库,作为我们本地库。
然后输入你想要的名字就行了,其他的配置基本不需要改变。
配置完成后,列表里面就会把你的那个库给显示出来。
下面我们尝试向这个第三方库里面上传jar包。我们要把D盘下面的ojdbc-6.jar给上传到我们的maven thirdParty库里面
Nexus2系列里面是可以在图形用户界面直接上传jar的,但是在nexus3里面,我并没有找到怎么上传,网上也没有,所以我们姑且用命令上传吧。
首先在你的maven配置文件里面,\conf\settings.xml里面配置服务器的信息
然后cmd执行如下命令,别直接拷贝因为为了方便阅读我给换行了。Cm窗口下你要写成一行。
mvn deploy:deploy-file
-DgroupId=com.test
-DartifactId=ojdbc
-Dversion=6
-Dpackaging=jar
-Dfile=D:\ojdbc-6.jar
-Durl=http://127.0.0.1:8091/nexus-console/repository/maven-thirdParty/
-DrepositoryId=nexus
这里面url一定要注意,ip和端口就不再解释了,nexus-console必须和你在nexus-3.1.0-04\etc目录下的nexus-default.properties这个文件里面配置的nexus-context-path对应,repository是固定的,nexus3里面就用这个,而nexus2里面用的是content\repositoris,maven-thirdPary是你的库的名字,另外后面的/也是必不可少的。
上传之后我们就可以在自己nexus私服看到了。
---------------------------------------------------------------------
下面我们开始尝试把刚才上传的那个jar包,做为第三方库给拉下来。
我用的IDE是IDEA15,里面的maven需要在settting里面配置一下,eclipse相应的也需要配置一下。
既然我们需要去服务器上把我们的jar包给拉下来,那么肯定是要把jar包对应的路径给maven指示出来。
这里有两种方式
第一种是配置在Pom 文件里面,放在project节点下面就好了。
配置在setting.xml里面,这样的话就使用该maven的所有项目。需要放在profile下面
为了让着profile有效我们还需要配置。(这个配置,如果你只有一个repository的话,activeProfiles应该是可以不配置的,我测试过,没有这个配置仍然有效。)
目前这种情况下,如果我们私服上找不到还是回去中央库找的。那我们如何让maven只在本地库找呢?
这就需要在setting.xml里面配置mirrors,然后再repository里面把id配置为central,这样id为central的配置会覆盖maven的base pom的默认配置。这时候profile配置的url其实已经没有什么意义了,配置仓库和插件仓库的主要目的是,控制release和snapshot版本是否可用。当maven需要下载构件的时候,会先去访问central的配置,查看是否支持下载快照或者是release版本。当得到肯定的回复的时候,就会走mirrors的配置,所以仓库自己的路径其实已经没什么用,配置成什么都可以。
我们现在尝试下是否能下载下来。
用IDEA新建一个common的maven项目,就叫common,pom文件添加如下配置。
然后maven自动就会把该jar包下载到本地。另外需要注意的是,对于maven2,和3,modelVersion都是4.0.0
然后我们可以对common项目打包,默认是打包为jar。
运行mvn clean package,目的是把代码打包到package。我们可以直接运行在项目目录下运行
Mvn clean package,这行命令的意思就是把该项目打包,根据pom文件里面的packaging字段的类型来打包,我们先打包成jar(不配置默认就是打包成jar)。
这样的话,我们的jar包就被打包到target目录下了,而这时候我们的本地库还是没有的,那么假设我们还有别的maven项目要依赖这个jar包,还是找不到的,这时候,我们就需要运行mvn clean install。
这样的话,我们的本地库就是有这个,那别的项目配置上依赖,就可以引用这个jar包了。找个稍后演示。
下面我大致解释下,maven命令的生命周期。
首先大家看下,我执行mvn clean install时候的控制台。
从截图我们可以看出,maven的命令,其实就是执行某个插件的某个方法,比如
Clean命令就是执行了clean插件下的clean方法,效果是删除了target目录下所有的文件。
但是我们明明没有执行过compile命令,为什么也调用到了compile:compile方法呢?这就是跟maven的生命周期有关了。
生命周期其实是一个抽象出来的概念,我们在一个项目中,经常需要进行,编译,测试,打包,部署,等等一系列的动作。比如有时候我们需要打包,那么我们至少要先进行编译吧,maven就把这些动作抽象为不同的生命周期,在每一个生命周期里面,都定义好了步骤(相当于一个抽象类),而插件就是用来实现具体逻辑的,就是实现这个抽象类。这样就可以方便的通过配置插件来实现构建的行为,甚至可以自己书写插件来实现某些特殊的需求。
Maven是有3套独立的生命周期的生命周期。
Clean生命周期的目标是清理项目,包含:
1 Pre-clean &
3 Post-clean &
Default 生命周期,是构建的核心阶段,包括
initialize
generate-sources
process-source
generate-resource
process-resource
process-class
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources
test-compile
process-test-classes
prepare-package
pre-integration-test
integration-test
post-integration-test
& & site 生命周期,主要是建立站点和发布的。
site-deploy
这三个生命周期是独立的,互不影响的,而生命周期本身是从上到下的。
比如,你只执行clean命令,那么实际执行的是pre-clean 和 clean两个动作。
你执行compile命令,执行的是Default 1~7所有的动作。
而只执行compile的话,是不会触发clean相关的动作的。
这也就解释了为什么我们一条命令会有那些动作的原因了。
下面说下,聚合跟继承。
首先说聚合,当我们项目中有多个子项目,并且这些子项目又需要同时构建的话,那我们就需要在每一个目录下面执行mvn install命令。
这样工作就比较重复,我们可以通过聚合来实现只执行一条命令,就同时构建多个项目。
然后再说继承。
就和java一样,如果有两个很相似的类,里面又有大量相同的代码,那我们会把相同的部分抽出来成为一个父类一样。Maven也可以有这种结构,这样就可省却大量的配置。
首先我们新建一个maven项目pom_base,由于这是一个用来被继承的maven项目,所以并不需要有什么代码,只需要一个pom文件
然后我们在common的pom里面继承parent。注意,packaging一定要是pom类型的
这时候可以看到,pom是有报错的,报错如下:
报错原因是,common在本地库并没有找到我们pom_base项目的pom文件。这时候我们有两个解决方案。
根据报错可以看出来,我们只需要配置&relativePath&&/ relativePath&标签,指明parent的具体位置就好。
把pom_base给install到本地库就好。(我们系统就是采用这种方式)。
我们项目其实很多子项目都继承pom_base.
另外这里面再解释一个标签,以pom_base为例子。就是定义变量,比如对于spring很多依赖版本是一样的,那么就可以把这些版本抽出来成为一个变量,这样的话,改起来的话只需要改这个变量的值就好了。
然后我们新建第三个项目,springStudy(名字忽略)
然后依赖common,继承pom_base.
这样我们就基本模拟了现在的项目结构。
比如,vst_front会依赖vst_common同时再继承vst_pom_base.
最后再说一下怎么样发布到我们nexu私服上。为了发布到服务器上,首先要在pom配置
然后在setting.xml配置server信息,因为默认的访问权限是只读的,你是不能发布到到nexus上的,所以要配上管理员权限的server(前文有说过怎么配置)。我们可以把上面的配置在pom_base里面,这样我们的三个项目就都可以放到nexus上了,不需要每个pom都配置一遍。
为了都尝试下,我comm放的是snapshot版本,springStudy放的是release版本
然后执行mvn deploy,遗憾的是报错了,没有被授权,这是因为我之前配置server的时候只配置了一个server,id是nexus
所以我把id改为nexus就好了
这样就上传上去了
最后再解释下 snapshot和release的区别。本身就理解的请忽略。
举个例子,如果A,B两人协作, A开发common,B开发springStudy。A开发完common,如果B需要用A新开发的代码,那么假设,A传到nexus上的版本是1.0,那么就算他的代码改动了B那边也不会把这个新的1.0给下载到本地库的,因为对于B来说他认为新上传的1.0和以前的1.0没区别。这时候为了告诉B两个是不一样的,A需要把pom版本改为2.0然后再deploy,假设频繁修改代码,就需要频繁的改动pom文件。而SPANPSHOT版本可以解决这个问题,这时候A只需要把pom文件里面的版本改为1.0-SNAPSHOT这时候当他deploy到nexus上的时候,jar包后面会自动跟上一个时间戳,如下面的例子一样。这时候B那边就知道它本地库的和nexus上的是不一样的,可以去nexus上把最新的版本更新下来了。
更多相关文章
windows下搭建hadoop开发环境(Eclipse) 注:hadoop 是java 编写的,可以通过java 直接编译出 hadoop 包.因此,操作系统影响 不大,只是需要剥去 linux这个外壳.
1. JDK 版本&1.7.0_01&
2. Cygwin ...
Golang/Go语言/Go IDE/Go Windows环境搭建/Go自动提示编译器/GoSublime.Go是Google开发的一种编译型,并发型,并具有垃圾回收功能的编程语言.罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设 ...
最近在接手一个手机项目.在搭建环境的过程中,遇到了一些问题,在下文中已做记录,并奉上个人的解决方案.开发环境 Windows 2003 ;
JetBrains RubyMine6.3.31.
下载最新版ruby,(rubyinstaller-2.0.0-p598.exe ,最新版)官网:http ...
公司打算用PostgreSQL,所以想了解下源码,有相关在windows下的环境搭建攻略吗?最好是自己搭建成功过的.谢谢大牛们~ 去看官方文档不就得了 http://www.postgresql.org/docs/
Objective-C是苹果软件的编程语言,想要上机学习.调试,有一个集成开发环境(IDE)方便很多.有三类方法搭建Objective-C的集成开发环境: 1)
使用苹果的平台,集成开发环境使用Xcode.但如果没有苹果平台,想在Windows环境下学习Objective-C,可以采用以下两种方 ...
本文章来给各位介绍一段网页插入flv视频代码,可控制是否自动播放实例,希望些代码对各位朋友会有所帮助.今天小涛分享一个比较实用的东西:网页插入flv视频代码,可控制是否自动播放 代码如下 &object wid ...
分享一篇关于Apache Lucene 分词系统几种介绍,有需要的可以参考一下.1. StopAnalyzerStopAnalyzer能过滤词汇中的特定字符串和词汇,并且完成大写转小写的功能.2. StandardA ...
Arquillian 团队发布了Arquillian Drone Extension2.0 ...
当电脑出现问题.或想要分享一些不能直接传送的内容时,屏幕截取是一个非常好用的方法.微软更特 ...
集群环境:1 NameNode(真实主机):Linux yan-Server 3.4.36 ...
30 Linux Kernel Developers in 30 Weeks 是 Linu ...
通常,在安装数据库时,绝大多数都是要求把selinux及iptables关闭,然后再进行安 ...
Druid 0.2.21 发布了,该版本主要改进内容有:[DRUID-261] - Ora ...
LinuxCon大会是北美每年一度的Linux盛事,这里集合了开发者.系统管理员.架构师以 ...
OpenXava 4.5发布了,该版本的主要改进包括:支持所有的JPA继承映射策略在使用J ...博客分类:
对于java的一些公用依赖包,我们通常需要发布在私有的nexus平台中,以便其他项目组使用。
1)我们首先需要搭建自己的nexus平台。
2)用户授权,指定用户具有release权限。
3)调整maven中的setting.xml文件。
4)调整project中的pom.xml文件。
1、setting.xml配置样例:
&?xml version="1.0" encoding="UTF-8"?&
&settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"&
&pluginGroups&
&/pluginGroups&
&/proxies&
&id&releases&/id&
&username&admin&/username&
&password&admin&/password&
&id&snapshots&/id&
&username&admin&/username&
&password&admin&/password&
&/servers&
&/mirrors&
&profiles&
&id&nexus&/id&
&repositories&
&repository&
&id&nexus_public&/id&
&name&Team Repository&/name&
&url&http://nexus.test.com.cn/nexus/content/groups/public/&/url&
&releases&
&enabled&true&/enabled&
&/releases&
&snapshots&
&enabled&true&&/enabled&
&updatePolicy&always&/updatePolicy&
&checksumPolicy&fail&/checksumPolicy&
&/snapshots&
&/repository&
&repository&
&id&snapshots&/id&
&url&http://nexus.test.com.cn/nexus/content/repositories/snapshots&/url&
&/repository&
&/repositories&
&pluginRepositories&
&pluginRepository&
&id&nexus_public&/id&
&url&http://nexus.test.com.cn/nexus/content/groups/public/&/url&
&releases&
&enabled&true&/enabled&
&/releases&
&snapshots&
&enabled&true&/enabled&
&/snapshots&
&/pluginRepository&
&pluginRepository&
&id&central&/id&
&name&Central Repository&/name&
&url&https://repo.maven.apache.org/maven2&/url&
&releases&
&updatePolicy&never&/updatePolicy&
&/releases&
&snapshots&
&enabled&false&/enabled&
&/snapshots&
&/pluginRepository&
&/pluginRepositories&
&/profile&
&/profiles&
&activeProfiles&
&activeProfile&nexus&/activeProfile&
&/activeProfiles&
&/settings&
&server&标签中配置nexus服务器端用户授权信息,通常我们需要配置两个:releases和snapshots,当然如果你的jar不需要进行snapshots发布,也可以不用配置。&profile&中配置project中引用jar时需要访问nexus服务器的方式。
2、pom.xml样例
&?xml version="1.0" encoding="UTF-8"?&
&project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&description&jdbc utils&/description&
&groupId&com.test.utils&/groupId&
&artifactId&jdbc-utils&/artifactId&
&packaging&jar&/packaging&
&version&1.0-SNAPSHOT&/version&
&name&jdbc-utils&/name&
&properties&
&jedis.version /&
&java.version&1.8&/java.version&
&org.springframework-version&4.3.3.RELEASE&/org.springframework-version&
&project.build.sourceEncoding&UTF-8&/project.build.sourceEncoding&
&/properties&
&developerConnection&scm:git:ssh://git@code.test.com.cn:3590/yourname/jdbc-utils.git&/developerConnection&
&url&scm:git:ssh://git@code.test.com.cn:3590/yourname/jdbc-utils.git&/url&
&connection&scm:git:ssh://git@code.test.com.cn:3590/yourname/jdbc-utils.git&/connection&
&!-- 此git地址上生成tag标签名,在release:prepare时会提示输入,此处可以不用配置 --&
&tag&jdbc-utils-1.0&/tag&
&distributionManagement&
&!-- if you use public-release --&
&repository&
&id&releases&/id&
&name&releases&/name&
&url&http://nexus.test.com.cn/nexus/content/repositories/releases/&/url&
&/repository&
&!-- if you use snapshots. --&
&snapshotRepository&
&id&snapshots&/id&
&name&snapshots&/name&
&url&http://nexus.test.com.cn/nexus/content/repositories/snapshots&/url&
&/snapshotRepository&
&/distributionManagement&
&dependencies&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-jdbc&/artifactId&
&version&${org.springframework-version}&/version&
&scope&provided&/scope&
&/dependency&
&/dependencies&
&artifactId&maven-compiler-plugin&/artifactId&
&version&3.1&/version&
&configuration&
&source&${java.version}&/source&
&target&${java.version}&/target&
&encoding&${project.build.sourceEncoding}&/encoding&
&/configuration&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-source-plugin&/artifactId&
&version&3.0.1&/version&
&executions&
&execution&
&goal&jar&/goal&
&/execution&
&/executions&
&artifactId&maven-resources-plugin&/artifactId&
&version&2.6&/version&
&configuration&
&encoding&${project.build.sourceEncoding}&/encoding&
&/configuration&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-release-plugin&/artifactId&
&version&2.5.3&/version&
&/plugins&
&/project&
1)项目的版本需要以“-SNAPSHOT”结尾,否则在release时将会抛出:
You don't have a SNAPSHOT project in the reactor projects list.
2)项目中需要配置“maven-release-plugin”,否则将无法执行命令,且此plugin的版本最好是最新的、且与maven的版本是兼容的。
3)&scm&标签中配置你的git地址,而且具有此git地址的“push”等权限。
4)&distributionManagement&标签中,配置需要进行代码release的地址,包括“releases”和“snapshots”(可选),&id&的值必须与setting.xml中&server&.&id&对应。此处需要非常注意的是:&server&中配置的用户需要具有pom.xml中两个地址的代码提交权限。否则将会抛出:
Return code is: 401, ReasonPhrase: Unauthorized.
5)为了避免不必要的问题,我们还需要将pom.xml中对应的两个url的访问权限按下图所示进行修改(在nexus平台上):
如果没有修改,极有可能抛出:
Return code is: 400, ReasonPhrase: Bad Request.
对于SCM发布,我们通常关注三个指令(参见):
1)mvn release:clean:清理release过程中产生的临时文件,通常当我们在release执行的任何过程中出现错误,或者放弃release时,执行此命令,类似于一个“回滚”的操作。
2)mvn release:rollback:回滚操作,当release操作执行一部分之后,无论是否发生错误,如果你希望回滚到release之前的代码状态,可以执行此操作。(注意,release:prepare阶段执行过程中,会修改pom.xml文件,rollback即表示回滚到prepare之前的状态)
3)mvn release:prepare:release的准备阶段,也是正常流的第一个操作,此阶段将会提示操作者本次release的版本号、下一次开发的SNAPSHOT版本号、生成tag的名称等,我们通常是一路回车,一切操作保持默认即可。
4)mvn release:perform:执行release远程发布,执行成功后,我们应该会在nexus响应的url中查看到我们的jar列表。
5)每次发布,都会在scm指定的git地址上生成一个tag,这个tag号与你的version保持一致,如果你意外出错,重新release相同版本时可能不会成功,因为此tag已经存在,此时你需要执行“git tag -d &你的tag名称&”来删除tag才能继续。(可以通过“git tag”查看tag的列表)
浏览: 971632 次
来自: 北京
博主这篇博文讲的很深入
canal支持前缀filter吗?比如schema是actio ...
你好,想问个问题。关于下面的内容:引用如果你不想开发shard ...
Jute.maxbuffer(系统属性:jute.maxbuf ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'maven3使用nexus作为代理服务器时需要修改中央库的url地址
安装nexus作为公司的代理maven库,maven使用maven3。
出现某些maven插件找不到依赖的库的问题,问题出在maven默认的中央库的地址是
,而nexus默认的中央代理库的地址是
可能是maven3启用了新的中央库,解决办法是:
修改nexus的中央库central配置:
把默认的中央库的url
&&& 修改为:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 nexus3搭建maven仓库 的文章

 

随机推荐