部署nexus私服
来源:互联网 发布:国外即时通讯软件排名 编辑:程序博客网 时间:2024/06/06 13:21
如果已经选择maven作为构建工具,当网络速度很慢或者受到限制,或者像我这样工作的地方就不能上网的,就需要建立一个maven的私服了。我的目的是把外网下载来的整个repository复制到工机器上,然后公开给内网的同事下载。
Maven的私服有Apache的Archiva,JFrog的Artifactory和Sonatype的Nexus,这是选择了Nexus,版本1.9.2.3。
1.下载安装
地址google。安装包分为bundle和war两种。bundle自带jetty容器,直接点击脚本nexus.bat运行或者Installnexus安装服务。nexus.bat按CTRL-C停止。War要自己部署。
Bundle解压后有nexus-webapp-*.*.*和sonatypework两个目录。webapp下是运行文件,bat要到nexus-oss-webapp-1.9.2.3\bin\jsw\windows-x86-32找(XP的)。work目录没有时,nexus也会自动创建,里面是数据文件,包括配置、日志和仓库相关文件。运行参数配置在的webapp的/conf/plexus.properties中,application-port设置端口。
2.基本的使用
打开http://{host}:{port}/nexus之后,默认访问是匿名用户,可以查询以来,查看仓库。Nexus是全面的权限控制功能,要管理,初始用默认admin/admin123登录。
admin登录可以看到更多的操作。点击左边导航的Repositories,右边出现nexus初始建好的仓库。
a. 索引: 开始我们什么都搜不到,是因为搜索需要索引,默认仓库索引的下载enable是false。点击选择仓库,比如"Maven Central"在下面configuration标签页,"Download Remote Indexes”选择true,save,然后右键点击"Maven Central",选择"Update Index"。Nexus会开始下载索引,这个任务可以在做导航区Administration下的Scheduled Tasks下看到。Scheduled Tasks可以配置定时任务,比如定时更新索引,仓库同步,清理等。索引下载需要一点时间,Maven Central的索引有300M+。下载完之后,因该可以搜到常见的jar包了。
b. 搜索:搜索可以按关键字搜索。搜索结果标签页的"Keyword Search"有个向下的三角,点击有下拉选项的,可以选择GAV按groupId、artifactId和version坐标搜索。而且是搜索是支持通配符的。结果下面右边有MavenInformation,下面一段xml方便直接拷贝到pom中。
c. 添加仓库:
仓库分有类型。hosted宿主仓库,本地仓库;proxy代理仓库,代理远程;group,仓库组,管理用;virtual这里不介绍,是为了服务maven1仓库格式的。
仓库属性。仓库格式有maven1和maven2,现在一般是maven2,maven1就不介绍了。属性 policy,表示仓库是Release(就是稳定版本)发布版本,还是Snapshot快照(不稳定,处在开发修改中的)版本。 policy的影响是,开发时我们依赖他人库,当然是希望是稳定的,没问题的,那只需要连到release库,一经下载,就不用再去下载了。当协作开发,依赖了正在开发的,它要声明自己是snapshot,我们要配置更新频率策略,比如一天下载一次。
创建hosted宿主仓库。仓库标签页,Add-->Hosted Repository,看到一个配置页面,属性名字意思清楚,我就不一个一个说。Provider就是仓库格式,现在都是用maven2,Storage Location不要填,默认会是在work目录下。Publish URL是要不要公开到http上供浏览。TTL是设置当一个依赖找不到时,缓存这个找不到结果的时间。这段时间内就不去真搜索,直接返回找不到,为了提高性能减少鸭梨。我见了一个叫local-centre。
创建远程代理proxy仓库。相同的属性就不说了."Download Remote Indexes"下载远程仓库提供的索引,不是每个库都提供。Remote Storage Location是要被代理的仓库地址。我在试验Jira,就填了https://m2proxy.atlassian.com/repository/public/,悲剧的是它不提供索引,但这不意味着下载不到。"Checksum Policy",检验失败后策略。如果有安全密码,Authentication配置上。"Artifact Max Age",表示依赖项的过期重新下载时间。如果是release的,可以设置为-1,下载后就不再下载了。如果是snapshot快照,默认1440分钟,也就是一天更新一次。有个有用的远程仓库是jboss的,http://repository.jboss.org/nexus/content/groups/public-jboss/,而且是提供索引的,有将近400M。
创建仓库组group。选择把哪些仓库加过来时注意排列的顺序就搜索的顺序,把常用可靠的放前面。不过是可以用鼠标上下拖动设置的。
3. 把本地下载的repository整个发布到nexus
这才是我真正要做到的。相关的内容是从nexus命令工具https://docs.sonatype.com/display/SPRTNXOSS/Nexus+Command+Line+Tools找到的。非常简单,就是把repository下的内容整个拷贝到sonatype-work\nexus\storage下的你目标仓库中。我hosted宿主仓库建了个local-centre,就放在下面。如果你是直接拷贝maven默认的repository,不要把cache文件夹也拷过去~ 然后去页面那右键点击Rebuild Metadata,重建元数据。包含它的组,也都去update index,更新索引。我的一拷贝过去,刷新下就有了,不过还是右键点击了下。这是你就可以在搜索那去验证,搜索一个只有本地库有的。
上面还提供一个分离仓库release和snapshot的工具,简单好用。
4.部署构建到nexus
我们常需要部署一些不能在公开仓库得到的依赖,比如oracle-jdbc, javaee.jar。或者我们协作开发。TeamA把开发的放到nexus,供TeamB使用,而且是每日构建(通常要为每个项目分配独立仓库),现在大家都敏捷了嘛。
a. 通过maven部署 : 日常开发可以这么部署。这需要在工程的pom文件中配置distributionManagement。示例如下:
代码段01:
<distributionManagement><repository><id>nexus-release</id><url>http://localhost:8081/nexus/content/groups/releases</url></repository><snapshotRepository><id>nexus-release</id><url>http://localhost:8081/nexus/content/groups/snapshots</url></snapshotRepository></distributionManagement>
Nexus默认匿名用户是只读的。所以还需要在maven的settings.xml中servers节点下配置认证信息(id要与上面相同):
代码段02:
<server> <id>nexus-release</id> <username>admin</username> <password>admin123</password> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>admin123</password> </server>
b. 手动部署:在宿主仓库下面最右边的标签页,有个Artifact Upload,可以在此手动上传依赖包。显示定义maven坐标GAV,可以选择导入pom文件,或者手工输入。下面就选择要上传的文件了。
5. Maven相关配置
a. Maven的settings.xml的配置 除了代码02权限验证信息,还有一些相关配置。部署Nexus当然是要连接它去用,所以要配置repository,这要用maven的profile机制。在profiles的一级节点下:
代码段03:
<profile> <id>nexus</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>nexus</id> <url>http://localhost:8081/nexus/content/groups/public</url> <snapshots> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>warn</checksumPolicy> </snapshots> <releases> <enabled>true</enabled> <checksumPolicy>warn</checksumPolicy> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <url>http://localhost:8081/nexus/content/groups/public</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> <checksumPolicy>warn</checksumPolicy> </releases> </pluginRepository> </pluginRepositories> <properties> <downloadSources>true</downloadSources> <downloadJavadocs>false</downloadJavadocs> </properties> </profile>
要激活使用这个profile(上面的已经是默认激活的),需要再加个一级节点:
代码段04:
<activeProfiles><activeProfile>nexus</activeProfile> </activeProfiles>
如果想让maven只使用我们的私服,需要及一级节点mirrors下面加上:
代码段05:
<mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://localhost:8081/nexus/content/groups/public</url> </mirror>
b. project的pom.xml
重要的就是代码段01了。如果只有当前project使用我们的Nexus私服,可以直接添加代码段03中的<repositories>这一部分,通常都不会这样。
6. 其他
没些权限管理和定时任务了,页面操作就够用了一般。权限管理也是基于user-role模式,预定义了一些use和role。作为helloworld级别的就这么多了。书看了许晓宾的《Maven实战》,还是本好书,觉得是广告的忽略。
其他一些注意的:
最好用标准的jre,不要用java7还,否则可能出"not have a no-args constructor”之类的异常。如果用安装包安装java7,可能会发现该了java
_home也还没用,那就去把system32下面的java.exe删掉。
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder",请看http://nomandia.iteye.com/blog/402826
[WARNING] Using platform encoding 请看http://blog.csdn.net/youshini/article/details/6514925
一下纯属牢骚:
m2e插件干嘛不提供zip包下载啊,不是完全公开的网络,根本就下载不下来。自己家里下载好了,把整个eclipse拷去用,一个clean,build命令又要去网上下maven插件,又得回去下。
Jira才知道被很多开源社区用了。可是用maven又不解决m2e兼容问题,用SDK常这样那样问题。文档多,但结构组织不好,不好找,不易清楚。
- 部署nexus私服
- 部署nexus私服
- Maven私服(Nexus)部署
- 部署nexus
- tomcat中部署maven私服-Nexus
- Nexus的部署
- 部署构件至nexus
- nexus配置、部署
- nexus部署私服
- nexus管理maven部署
- nexus安装和部署
- linux部署Nexus OSS
- Nexus搭建Maven私服(五) Maven远程部署web工程
- Maven 部署构件至Nexus
- maven nexus 和 热部署
- nexus私服
- Nexus私服
- 配置Nexus仓库,部署构件到Nexus仓库
- Config the Network in Linux
- 搜索1Google的高级搜索技巧
- 污点修复工具
- Linux设备模型浅析之固件篇
- 关于setContentPane()和getContentPane()的应用
- 部署nexus私服
- PDU编码规则
- define的用法小结
- jpa与hibernate的关系
- 手机短信的PDU编码和解码
- pdu的编码格式
- 截屏 ClipScreen
- <<Combating Web Spam with TrustRank>>的实验
- 各种电影