﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Terry.Li-彬-文章分类-Maven2</title><link>http://www.blogjava.net/libin2722/category/37136.html</link><description>虚其心，可解天下之问；专其心，可治天下之学；静其心，可悟天下之理；恒其心，可成天下之业。</description><language>zh-cn</language><lastBuildDate>Fri, 31 Oct 2014 16:01:40 GMT</lastBuildDate><pubDate>Fri, 31 Oct 2014 16:01:40 GMT</pubDate><ttl>60</ttl><item><title>repositories</title><link>http://www.blogjava.net/libin2722/articles/404849.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Thu, 10 Oct 2013 15:08:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/404849.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/404849.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/404849.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/404849.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/404849.html</trackback:ping><description><![CDATA[
		<pre style="color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; white-space: pre-wrap;">&lt;!-- ********************************************** --&gt;
&lt;!-- **** REPOSITORIOS DEL PROYECTO **** --&gt;
&lt;!-- ********************************************** --&gt;
&lt;repositories&gt;

&lt;!-- ****** RELEASE ****** --&gt;
&lt;repository&gt;
&lt;id&gt;atlassian&lt;/id&gt;
&lt;url&gt;http://maven.atlassian.com/repository/public&lt;/url&gt;
&lt;releases&gt; &lt;enabled&gt; true&lt;/enabled&gt; &lt;/releases&gt;
&lt;snapshots&gt; &lt;enabled&gt; false &lt;/enabled&gt; &lt;/snapshots&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;maven.org.repo2&lt;/id&gt;
&lt;name&gt;Repository of Maven.org&lt;/name&gt;
&lt;url&gt;http://search.maven.org/#search&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;search.maven.org&lt;/id&gt;
&lt;name&gt;Repository of Maven.org&lt;/name&gt;
&lt;url&gt;http://search.maven.org&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;itextpdf.com&lt;/id&gt;
&lt;name&gt;Maven Repository for iText&lt;/name&gt;
&lt;url&gt;http://maven.itextpdf.com&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;repository.jboss.com&lt;/id&gt;
&lt;name&gt;Jboss Repository for Maven&lt;/name&gt;
&lt;url&gt;http://repository.jboss.com&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;snapshots.jboss.org&lt;/id&gt;
&lt;name&gt;Jboss Snapshot Repository for Maven&lt;/name&gt;
&lt;url&gt;http://snapshots.jboss.org/maven2&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;java.net&lt;/id&gt;
&lt;name&gt;Repository of Java.net&lt;/name&gt;
&lt;url&gt;http://download.java.net/maven/1&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;deltaset.org&lt;/id&gt;
&lt;name&gt;Repository of Deltaset&lt;/name&gt;
&lt;url&gt;http://deltaset.googlecode.com/svn/maven2&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;prime.com&lt;/id&gt;
&lt;name&gt;Repository of PrimeFaces&lt;/name&gt;
&lt;url&gt;http://repository.prime.com.tr/org&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;com.springsource.repository.maven.milestone&lt;/id&gt;
&lt;name&gt;Spring Framework Maven Milestone Releases (Maven Central Format)&lt;/name&gt;
&lt;url&gt;http://maven.springframework.org/milestone&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;maven-repository2.dev.java.net&lt;/id&gt;
&lt;name&gt;Java.net Repository for Maven 2&lt;/name&gt;
&lt;url&gt;http://download.java.net/maven/2&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;mvnrepository.com&lt;/id&gt;
&lt;name&gt;mvnrepository.com&lt;/name&gt;
&lt;url&gt;http://mvnrepository.com&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;www.mvnbrowser.com&lt;/id&gt;
&lt;name&gt;www.mvnbrowser.com&lt;/name&gt;
&lt;url&gt;http://www.mvnbrowser.com&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;objectweb&lt;/id&gt;
&lt;name&gt;Objectweb repository&lt;/name&gt;
&lt;url&gt;http://maven.objectweb.org/maven2&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;ops4j.repository&lt;/id&gt;
&lt;name&gt;OPS4J Repository&lt;/name&gt;
&lt;url&gt;http://repository.ops4j.org/maven2&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;Codehaus Snapshots&lt;/id&gt;
&lt;url&gt;http://snapshots.repository.codehaus.org/&lt;/url&gt;
&lt;/repository&gt;


&lt;!-- **** SNAPSHOTS **** --&gt;
&lt;repository&gt;
&lt;id&gt;apache-maven-snapshots&lt;/id&gt;
&lt;name&gt;Repository of Snapshots&lt;/name&gt;
&lt;url&gt;http://repository.apache.org/snapshots&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt;
&lt;id&gt;apache.snapshots&lt;/id&gt;
&lt;name&gt;ASF Maven 2 Snapshot&lt;/name&gt;
&lt;url&gt;http://people.apache.org/builds/struts/2.1.8.1/m2-staging-repository&lt;/url&gt;
&lt;/repository&gt;

&lt;repository&gt; &lt;id&gt;com.springsource.repository.maven.snapshot&lt;/id&gt;
&lt;name&gt;SpringSource Enterprise Bundle Maven Repository - SpringSource Snapshot Releases&lt;/name&gt; &lt;url&gt;http://maven.springframework.org/snapshot&lt;/url&gt;
&lt;/repository&gt;

&lt;/repositories&gt;</pre>
<img src ="http://www.blogjava.net/libin2722/aggbug/404849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2013-10-10 23:08 <a href="http://www.blogjava.net/libin2722/articles/404849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>搭建Maven的Nexus私服，方便团队编码</title><link>http://www.blogjava.net/libin2722/articles/332877.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Sat, 25 Sep 2010 16:16:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/332877.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/332877.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/332877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/332877.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/332877.html</trackback:ping><description><![CDATA[1、下载war包，部署到tomcat中，启动tomcat；<br />
2、访问：http://xxx/nexus-1.1.1/index.html；<br />
3、用admin/admin123登录；<br />
4、修改admin的密码，但是不要修改别的属性和修改别的用户信息<br />
5、进入administration中的repositories，依次修改三个type是proxy的项目，将其Download Remote Indexes修改为true；然后邮件他们，分别re-index一下；<br />
6、将你自己机器上的manven缓存（一般是在C:\Documents and Settings\登录名\.m2下面）全部拷贝到/home/你的用户名/sonatype-work/nexus/storage下面的central和releases各一份；<br />
7、修改你本地的（一般是在C:\Documents and Settings\登录名\.m2下面）setting.xml文件改成下面的：<br /><div class="dp-highlighter"><div class="bar"><div class="tools">Xml代码 </div></div><ol class="dp-xml" start="1"><li><span><span class="tag">&lt;</span><span class="tag-name">settings</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>      <span class="tag">&lt;</span><span class="tag-name">proxies</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;</span><span class="tag-name">proxy</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>normal</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">active</span><span class="tag">&gt;</span><span>true</span><span class="tag">&lt;/</span><span class="tag-name">active</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">protocol</span><span class="tag">&gt;</span><span>http</span><span class="tag">&lt;/</span><span class="tag-name">protocol</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">username</span><span class="tag">&gt;</span><span>deployment</span><span class="tag">&lt;/</span><span class="tag-name">username</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">password</span><span class="tag">&gt;</span><span>deploy</span><span class="tag">&lt;/</span><span class="tag-name">password</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">host</span><span class="tag">&gt;</span><span>172.19.0.177:8080/nexus-1.1.1</span><span class="tag">&lt;/</span><span class="tag-name">host</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">port</span><span class="tag">&gt;</span><span>80</span><span class="tag">&lt;/</span><span class="tag-name">port</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">nonProxyHosts</span><span class="tag">&gt;</span><span>172.19.0.177:8080/nexus-1.1.1</span><span class="tag">&lt;/</span><span class="tag-name">nonProxyHosts</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;/</span><span class="tag-name">proxy</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>      <span class="tag">&lt;/</span><span class="tag-name">proxies</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>      <span class="tag">&lt;</span><span class="tag-name">servers</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>      <span class="tag">&lt;/</span><span class="tag-name">servers</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>      <span class="tag">&lt;</span><span class="tag-name">mirrors</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>         <span class="tag">&lt;</span><span class="tag-name">mirror</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>nexus-public-snapshots</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">mirrorOf</span><span class="tag">&gt;</span><span>public-snapshots</span><span class="tag">&lt;/</span><span class="tag-name">mirrorOf</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>http://172.19.0.177:8080/nexus-1.1.1/content/groups/public-snapshots</span><span class="tag">&lt;/</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;/</span><span class="tag-name">mirror</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;</span><span class="tag-name">mirror</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="comments">&lt;!--This sends everything else to /public --&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>nexus</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">mirrorOf</span><span class="tag">&gt;</span><span>*</span><span class="tag">&lt;/</span><span class="tag-name">mirrorOf</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>http://172.19.0.177:8080/nexus-1.1.1/content/groups/public</span><span class="tag">&lt;/</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;/</span><span class="tag-name">mirror</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>      <span class="tag">&lt;/</span><span class="tag-name">mirrors</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>      <span class="tag">&lt;</span><span class="tag-name">profiles</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;</span><span class="tag-name">profile</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>development</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">repositories</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;</span><span class="tag-name">repository</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>central</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>http://central</span><span class="tag">&lt;/</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">releases</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span>true</span><span class="tag">&lt;/</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">releases</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">snapshots</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span>true</span><span class="tag">&lt;/</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">snapshots</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;/</span><span class="tag-name">repository</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;/</span><span class="tag-name">repositories</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>         <span class="tag">&lt;</span><span class="tag-name">pluginRepositories</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;</span><span class="tag-name">pluginRepository</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>central</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>http://central</span><span class="tag">&lt;/</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">releases</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span>true</span><span class="tag">&lt;/</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">releases</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">snapshots</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span>true</span><span class="tag">&lt;/</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">snapshots</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;/</span><span class="tag-name">pluginRepository</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;/</span><span class="tag-name">pluginRepositories</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;/</span><span class="tag-name">profile</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;</span><span class="tag-name">profile</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>public-snapshots</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;</span><span class="tag-name">repositories</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;</span><span class="tag-name">repository</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>public-snapshots</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>http://public-snapshots</span><span class="tag">&lt;/</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">releases</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span>false</span><span class="tag">&lt;/</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">releases</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">snapshots</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span>true</span><span class="tag">&lt;/</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">snapshots</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;/</span><span class="tag-name">repository</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;/</span><span class="tag-name">repositories</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>         <span class="tag">&lt;</span><span class="tag-name">pluginRepositories</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;</span><span class="tag-name">pluginRepository</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>public-snapshots</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>http://public-snapshots</span><span class="tag">&lt;/</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">releases</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span>false</span><span class="tag">&lt;/</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">releases</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>              <span class="tag">&lt;</span><span class="tag-name">snapshots</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span>true</span><span class="tag">&lt;/</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">snapshots</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;/</span><span class="tag-name">pluginRepository</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>          <span class="tag">&lt;/</span><span class="tag-name">pluginRepositories</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;/</span><span class="tag-name">profile</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>      <span class="tag">&lt;/</span><span class="tag-name">profiles</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;</span><span class="tag-name">activeProfiles</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;</span><span class="tag-name">activeProfile</span><span class="tag">&gt;</span><span>development</span><span class="tag">&lt;/</span><span class="tag-name">activeProfile</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>      <span class="tag">&lt;/</span><span class="tag-name">activeProfiles</span><span class="tag">&gt;</span><span>  </span></span></li><li><span><span class="tag">&lt;/</span><span class="tag-name">settings</span><span class="tag">&gt;</span><span>  </span></span></li></ol></div>
 
<p>    将172.19.0.177地址修改为你自己的服务器地址<br />
    <br />
8、在你的项目中的pom.xml中增加一段：<br /></p><div class="dp-highlighter"><div class="bar"><div class="tools">Xml代码 </div></div><ol class="dp-xml" start="1"><li><span><span class="tag">&lt;</span><span class="tag-name">distributionManagement</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;</span><span class="tag-name">repository</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>repo</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;</span><span class="tag-name">name</span><span class="tag">&gt;</span><span>public</span><span class="tag">&lt;/</span><span class="tag-name">name</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>http://172.19.0.177:8080/nexus-1.1.1/content/repositories/releases</span><span class="tag">&lt;/</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;/</span><span class="tag-name">repository</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;</span><span class="tag-name">snapshotRepository</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>Snapshots</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;</span><span class="tag-name">name</span><span class="tag">&gt;</span><span>Snapshots</span><span class="tag">&lt;/</span><span class="tag-name">name</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>            <span class="tag">&lt;</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>http://172.19.0.177:8080/nexus-1.1.1/content/repositories/snapshots</span><span class="tag">&lt;/</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>        <span class="tag">&lt;/</span><span class="tag-name">snapshotRepository</span><span class="tag">&gt;</span><span>  </span></span></li><li><span>    <span class="tag">&lt;/</span><span class="tag-name">distributionManagement</span><span class="tag">&gt;</span><span>  </span></span></li></ol></div>
 
<p><br />
这样一来经过我的测试，如果你在没有局域网的环境中（也就是没办法访问你的私服），只要将pom里面的那段删除就可以了。</p><img src ="http://www.blogjava.net/libin2722/aggbug/332877.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2010-09-26 00:16 <a href="http://www.blogjava.net/libin2722/articles/332877.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Maven使用deploy命令部署构建</title><link>http://www.blogjava.net/libin2722/articles/332876.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Sat, 25 Sep 2010 16:06:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/332876.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/332876.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/332876.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/332876.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/332876.html</trackback:ping><description><![CDATA[
		<div id="blog_text" class="cnt">
				<div align="left">
						<font size="3">具体怎样使用deploy命令部署构件到nexus服务器上可以参考经典的《Maven Definitive Guide》(Maven操作指南)，书中的16.7节里面讲解的非常详细。假设我们在项目pom.xml文件中对maven服务器的设置信息如下：<br />
&lt;distributionManagement&gt;<br />
&lt;repository&gt;<br />
&lt;id&gt;nexus-releases&lt;/id&gt;<br />
&lt;name&gt;Local Nexus Repository&lt;/name&gt;<br />
&lt;url&gt;http://192.168.1.99:8081/content/repositories/releases&lt;/url&gt;<br />
&lt;/repository&gt;<br />
&lt;snapshotRepository&gt;<br />
&lt;id&gt;nexus-snapshots&lt;/id&gt;<br />
&lt;name&gt;Local Nexus Repository&lt;/name&gt;<br />
&lt;url&gt;http://192.168.1.99:8081/content/repositories/snapshots&lt;/url&gt;<br />
&lt;/snapshotRepository&gt;<br />
&lt;/distributionManagement&gt;<br /><br />
这里我要说的是在使用的过程中遇到的几个都是“Failed to transfer file”错误，错误信息如下格式：<br /><br />
Error deploying artifact: Failed to transfer file:… Return code is:4xx <br /><br />
也就是说前面错误的信息都是一样的，只是后面返回的HTTP状态数字不同。<br /><br />
1. Return code is: 405<br />
这个问题害我查了两个多小时才发现错误的根源，简单的错误就是在Maven执行到上传文件到服务器的时候出现一个HTTP 
405错误。开始的时候总以为是Maven本身的问题，所以在这个上面浪费了不少时间。后来仔细查了405错误的含义是“用来访问本页面的 HTTP 
方法不被允许”，最后终于发现是因为前面repository的地址写错了，或者是端口写错，或者是地址中的某个单词拼错了，反正原因就是
repository的地址写错了。<br /><br />
2. Return code is: 401或者Return code is: 403<br />
其实403错误就是“禁止访问”的含义，所以问题的根源肯定在授权上面。Maven在默认情况下会使用deployment帐号(默认密码deploy)
登录的系统，但是关键的Nexus中Releases仓库默认的Deployment Policy是“Disable 
Redeploy”，所以无法部署的问题在这个地方，方法是将其修改为“Allow Redeploy”就可以了。<br /><br /><br />
到这里还没有结束，因为如果直接按照上面的设置的话会有一个安全问题，那就是这样所有的开发人员都可以将构件部署到Nexus的releases仓库中
了，时间长了会导致这个仓库中非常乱，这也应该是nexus为什么默认情况下将Release仓库的发布权限关闭的原因了。解决这个问题的整体思路就是在
部署构件的时候需要使用用户名和密码登录，操作如下：<br />
(1) 首先将Releases仓库默认的Deployment Policy修改为“Allow Redeploy”；<br />
(2) 然后在右边的Security下面的Users中，修改deployment帐号的密码，方法是在帐号上右键，然后选择“Set Password”(PS：这个操作我找了好久，后来无意中右键才找到，呵呵~~)；<br /><br />
(3) 这个时候如果直接执行 mvn deploy 命令的话就又会出现401错误，还有一步就是将密码设置到Maven 
settings.xml中。打开settings.xml文件(${user.home}/.m/settings.xml或%{m2_home}
/conf/settings.xml)，找到&lt;servers&gt;，然后修改信息如下：<br />
&lt;server&gt;<br />
&lt;id&gt;nexus-releases&lt;/id&gt;<br />
&lt;username&gt;deployment&lt;/username&gt;<br />
&lt;password&gt;deploydv89&lt;/password&gt;<br />
&lt;/server&gt;<br /><br />
&lt;server&gt;<br />
&lt;id&gt;nexus-snapshots&lt;/id&gt;<br />
&lt;username&gt;deployment&lt;/username&gt;<br />
&lt;password&gt;deploydv89&lt;/password&gt;<br />
&lt;/server&gt;<br /><br />
这里需要特别说明一句的是里面的id必须和你在项目pom.xml文件中distributionManagement下面设置的仓库id一致！当然了，这个里面你也可以设置admin帐号，或者参照deployment的权限手动添加新的帐号等等都是可以的。<br /><br />
当然，问题到这里已经得到了比较完美的解放，但是</font>
						<font color="#ff0000" size="3">如果有人还要较真的话会想到帐号的密码直接放到配置文件里面不是很安全。其实只要这里不建议放admin帐号，而deployment是无法登录的。如果非要更安全一些的话，也可以使用Maven 2.1.0之后所提供的密码加密功能，操作的步骤如下：</font>
						<font size="3">
								<br />
						</font>
						<font color="#ff0000" size="3"> (1) 使用“mvn 
–encrypt-master-password xxx”或“mvn –emp 
xxx”创建一个主密钥，后面的xxx就是你所要设置的密钥的内容，这个密钥主要用于后面加密密码来用的；命令执行之后会产生一个类似
{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}形式的字符串。</font>
						<font size="3">
								<br />
						</font>
						<font color="#ff0000" size="3"> (2) 在${user.home}/.m/目录下创建一个名为settings-security.xml文件，我们将刚刚产生的主密钥放到这个文件中，文件的内容如下：</font>
						<font size="3">
								<br />
						</font>
						<font color="#ff0000" size="3"> &lt;?xml version="1.0" encoding="UTF-8"?&gt;</font>
						<font size="3">
								<br />
						</font>
						<font color="#ff0000" size="3"> &lt;settingsSecurity&gt;</font>
						<font size="3">
								<br />
						</font>
						<font color="#ff0000" size="3"> &lt;master&gt;{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}&lt;/master&gt;</font>
						<font size="3">
								<br />
						</font>
						<font color="#ff0000" size="3"> &lt;/settingsSecurity&gt;</font>
						<font size="3">
								<br />
						</font>
						<font color="#ff0000" size="3">
						</font>
						<font size="3">
								<br />
						</font>
						<font color="#ff0000" size="3"> 注意，这个settings-security.xml文件一定要放在${user.home}/.m/目录下面，而不能放在${m2_home}/conf目录下！</font>
						<font size="3">
								<br />
						</font>
						<font color="#ff0000" size="3"> (3) 使用“mvn –encrypt-password 
xxx”或“mvn –ep 
xxx”命令对帐号的密码进行加密，后面的xxx就是帐号的密码，加密之后依然会产生一个“{xxx}”形式的字符串，将这个字符串替换上面
settings.xml文件中的server下面的password节点内容即可。</font>
						<font size="3">
								<br />
						</font>
						<font color="#ff0000" size="3"> 还有一种更安全的方式，就是将主密钥放到U盘里面，具体的操作可以看下面的参考资料。</font>
						<font size="3">
								<br />
								<br />
3. Return code is: 400<br />
400错误的含义是“错误的请求”，在这里的原因是往往是没有部署到nexus的仓库中。nexus的repository分三种类型：Hosted、
Proxy和Virtual，另外还有一个repository 
group(仓库组)用于对多个仓库进行组合。部署的时候只能部署到Hosted类型的仓库中，如果是其他类型就会出现这个400错误。<br /><br />
还有一种情况也会出现400错误，就是默认情况下部署构件到Releases仓库中有时也会出现400错误，这个原因就像上面提到的那样，Nexus中
Releases仓库默认的Deployment Policy是“Disable 
Redeploy”，所以无论你在settings.xml文件中将server的username设置为deployment还是使用admin都是无
法部署的，就会出现这个400错误。这个问题也困扰了我好长时间，而且我还看到网上有人说admin没有部署构件的权限，这个是不对的。修改的方法可以参
考上面第2条的做法。<br /><br /><br />mvn deploy -Dmaven.test.skip=true<br /><br /><br /><br /><br /><div style="background-color:#eeeeee;font-size:13px;BORDER:1px solid #CCCCCC;PADDING-RIGHT: 5px;PADDING-BOTTOM: 4px;PADDING-left: 4px;PADDING-TOP: 4px;WIDTH: 98%;word-break:break-all"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">settings </span><span style="color: #FF0000; ">xmlns</span><span style="color: #0000FF; ">="http://maven.apache.org/SETTINGS/1.0.0"</span><span style="color: #FF0000; "><br />    xmlns:xsi</span><span style="color: #0000FF; ">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #FF0000; "><br />    xsi:schemaLocation</span><span style="color: #0000FF; ">="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">localRepository</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">F:\m2Repository</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">localRepository</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />    <br />    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">pluginGroups</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">pluginGroups</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">proxies</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">proxies</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />    <br />    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">servers</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">server</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">nexus-releases</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">username</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">admin</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">username</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">password</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">admin123</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">password</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />        </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">server</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">server</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">nexus-snapshots</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">username</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">admin</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">username</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">password</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">admin123</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">password</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />        </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">server</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">servers</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />    <br /><br />    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mirrors</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mirror</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">nexus</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mirrorOf</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">*</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">mirrorOf</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">Nexus lirenkj</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">url</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">http://nexus.lirenkj.com/content/groups/public/</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">url</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />        </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">mirror</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">mirrors</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">profiles</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">profile</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">dev</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">activation</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">jdk</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">1.7</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">jdk</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">activation</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">repositories</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">repository</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">nexus</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">local private nexus</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">url</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">http://nexus.lirenkj.com/content/groups/public/</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">url</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">releases</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">enabled</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">true</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">enabled</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">releases</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">snapshots</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">enabled</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">true</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">enabled</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">snapshots</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">repository</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">repositories</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">pluginRepositories</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">pluginRepository</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">nexus</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">local private nexus</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">url</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">http://nexus.lirenkj.com/content/groups/public/</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">url</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">releases</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">enabled</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">true</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">enabled</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">releases</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">snapshots</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">enabled</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">true</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">enabled</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">snapshots</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />                </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">pluginRepository</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">pluginRepositories</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />        </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">profile</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">profiles</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /><br />    </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">activeProfiles</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />        </span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">activeProfile</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">dev</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">activeProfile</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">activeProfiles</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">settings</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span></div><br /></font>
				</div>
		</div>
<img src ="http://www.blogjava.net/libin2722/aggbug/332876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2010-09-26 00:06 <a href="http://www.blogjava.net/libin2722/articles/332876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>maven2的主要配置pom.xml</title><link>http://www.blogjava.net/libin2722/articles/319958.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Mon, 03 May 2010 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/319958.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/319958.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/319958.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/319958.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/319958.html</trackback:ping><description><![CDATA[pom作为项目对象模型。通过xml表示<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>项目，使用pom.xml来实现。主要描述了项目：包括配置文件；开发者需要遵循的规则，缺陷管理系统，组织和licenses，项目的url，项目的依赖性，以及其他所有的项目相关因素。<br />快速察看：
<div class="dp-highlighter"><div class="bar"><div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://topinking.javaeye.com/blog/212838#"><img alt="复制代码" src="http://topinking.javaeye.com/images/icon_copy.gif" /></a></div></div><ol class="dp-j"><li><span><span>&lt;project&gt;   </span></span></li><li><span>    &lt;modelVersion&gt;</span><span class="number"><font color="#c00000">4.0</font></span><span>.</span><span class="number"><font color="#c00000">0</font></span><span>&lt;/modelVersion&gt;   </span></li><li><span>  </span></li><li><span>    &lt;!-- The Basics --&gt;   </span></li><li><span>    &lt;groupId&gt;...&lt;/groupId&gt;   </span></li><li><span>    &lt;artifactId&gt;...&lt;/artifactId&gt;   </span></li><li><span>    &lt;version&gt;...&lt;/version&gt;   </span></li><li><span>    &lt;packaging&gt;...&lt;/packaging&gt;   </span></li><li><span>    &lt;dependencies&gt;...&lt;/dependencies&gt;   </span></li><li><span>    &lt;parent&gt;...&lt;/parent&gt;   </span></li><li><span>    &lt;dependencyManagement&gt;...&lt;/dependencyManagement&gt;   </span></li><li><span>    &lt;modules&gt;...&lt;/modules&gt;   </span></li><li><span>    &lt;properties&gt;...&lt;/properties&gt;   </span></li><li><span>  </span></li><li><span>    &lt;!-- Build Settings --&gt;   </span></li><li><span>    &lt;build&gt;...&lt;/build&gt;   </span></li><li><span>    &lt;reporting&gt;...&lt;/reporting&gt;   </span></li><li><span>  </span></li><li><span>    &lt;!-- More Project Information --&gt;   </span></li><li><span>    &lt;name&gt;...&lt;/name&gt;   </span></li><li><span>    &lt;description&gt;...&lt;/description&gt;   </span></li><li><span>    &lt;url&gt;...&lt;/url&gt;   </span></li><li><span>    &lt;inceptionYear&gt;...&lt;/inceptionYear&gt;   </span></li><li><span>    &lt;licenses&gt;...&lt;/licenses&gt;   </span></li><li><span>    &lt;organization&gt;...&lt;/organization&gt;   </span></li><li><span>    &lt;developers&gt;...&lt;/developers&gt;   </span></li><li><span>    &lt;contributors&gt;...&lt;/contributors&gt;   </span></li><li><span>  </span></li><li><span>    &lt;!-- Environment Settings --&gt;   </span></li><li><span>    &lt;<span class="hilite2"><font style="BACKGROUND-COLOR: #55ff55">issueManagement</font></span>&gt;...&lt;/<span class="hilite2"><font style="BACKGROUND-COLOR: #55ff55">issueManagement</font></span>&gt;   </span></li><li><span>    &lt;ciManagement&gt;...&lt;/ciManagement&gt;   </span></li><li><span>    &lt;mailingLists&gt;...&lt;/mailingLists&gt;   </span></li><li><span>    &lt;scm&gt;...&lt;/scm&gt;   </span></li><li><span>    &lt;prerequisites&gt;...&lt;/prerequisites&gt;   </span></li><li><span>    &lt;repositories&gt;...&lt;/repositories&gt;   </span></li><li><span>    &lt;pluginRepositories&gt;...&lt;/pluginRepositories&gt;   </span></li><li><span>    &lt;distributionManagement&gt;...&lt;/distributionManagement&gt;   </span></li><li><span>    &lt;profiles&gt;...&lt;/profiles&gt;   </span></li><li><span>&lt;/project&gt;  </span></li></ol></div><pre class="java" style="DISPLAY: none" name="code">&lt;project&gt;
	&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

	&lt;!-- The Basics --&gt;
	&lt;groupId&gt;...&lt;/groupId&gt;
	&lt;artifactId&gt;...&lt;/artifactId&gt;
	&lt;version&gt;...&lt;/version&gt;
	&lt;packaging&gt;...&lt;/packaging&gt;
	&lt;dependencies&gt;...&lt;/dependencies&gt;
	&lt;parent&gt;...&lt;/parent&gt;
	&lt;dependencyManagement&gt;...&lt;/dependencyManagement&gt;
	&lt;modules&gt;...&lt;/modules&gt;
	&lt;properties&gt;...&lt;/properties&gt;

	&lt;!-- Build Settings --&gt;
	&lt;build&gt;...&lt;/build&gt;
	&lt;reporting&gt;...&lt;/reporting&gt;

	&lt;!-- More Project Information --&gt;
	&lt;name&gt;...&lt;/name&gt;
	&lt;description&gt;...&lt;/description&gt;
	&lt;url&gt;...&lt;/url&gt;
	&lt;inceptionYear&gt;...&lt;/inceptionYear&gt;
	&lt;licenses&gt;...&lt;/licenses&gt;
	&lt;organization&gt;...&lt;/organization&gt;
	&lt;developers&gt;...&lt;/developers&gt;
	&lt;contributors&gt;...&lt;/contributors&gt;

	&lt;!-- Environment Settings --&gt;
	&lt;<span class="hilite2"><font style="BACKGROUND-COLOR: #55ff55">issueManagement</font></span>&gt;...&lt;/<span class="hilite2"><font style="BACKGROUND-COLOR: #55ff55">issueManagement</font></span>&gt;
	&lt;ciManagement&gt;...&lt;/ciManagement&gt;
	&lt;mailingLists&gt;...&lt;/mailingLists&gt;
	&lt;scm&gt;...&lt;/scm&gt;
	&lt;prerequisites&gt;...&lt;/prerequisites&gt;
	&lt;repositories&gt;...&lt;/repositories&gt;
	&lt;pluginRepositories&gt;...&lt;/pluginRepositories&gt;
	&lt;distributionManagement&gt;...&lt;/distributionManagement&gt;
	&lt;profiles&gt;...&lt;/profiles&gt;
&lt;/project&gt;</pre>  
<p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><div class="dp-highlighter"><div class="bar"><div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://topinking.javaeye.com/blog/212838#"><img alt="复制代码" src="http://topinking.javaeye.com/images/icon_copy.gif" /></a></div></div><ol class="dp-j"><li><span><span>&lt;!-- The Basics --&gt;   </span></span></li><li><span>    &lt;groupId&gt;...&lt;/groupId&gt;   </span></li><li><span>    &lt;artifactId&gt;...&lt;/artifactId&gt;   </span></li><li><span>    &lt;version&gt;...&lt;/version&gt;   </span></li><li><span>    &lt;packaging&gt;...&lt;/packaging&gt;   </span></li><li><span>    &lt;dependencies&gt;...&lt;/dependencies&gt;   </span></li><li><span>    &lt;parent&gt;...&lt;/parent&gt;   </span></li><li><span>    &lt;dependencyManagement&gt;...&lt;/dependencyManagement&gt;   </span></li><li><span>    &lt;modules&gt;...&lt;/modules&gt;   </span></li><li><span>    &lt;properties&gt;...&lt;/properties&gt;  </span></li></ol></div><pre class="java" style="DISPLAY: none" name="code">&lt;!-- The Basics --&gt;
	&lt;groupId&gt;...&lt;/groupId&gt;
	&lt;artifactId&gt;...&lt;/artifactId&gt;
	&lt;version&gt;...&lt;/version&gt;
	&lt;packaging&gt;...&lt;/packaging&gt;
	&lt;dependencies&gt;...&lt;/dependencies&gt;
	&lt;parent&gt;...&lt;/parent&gt;
	&lt;dependencyManagement&gt;...&lt;/dependencyManagement&gt;
	&lt;modules&gt;...&lt;/modules&gt;
	&lt;properties&gt;...&lt;/properties&gt;

</pre>  
<p><br /><br />基本内容：<br />    POM包括了所有的项目信息。<br /><span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span> 相关：<br />pom定义了最小的maven2元素，允许groupId,artifactId,version。所有需要的元素<br /><br />groupId:项目或者组织的唯一标志，并且配置时生成的路径也是由此生成，如org.codehaus.mojo生成的相对路径为：/org/codehaus/mojo <br />artifactId: 项目的通用名称 <br />version:项目的版本 <br />packaging: 打包的机制，如pom, jar, <span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>-plugin, ejb, war, ear, rar, par <br />classifier: 分类<br />POM关系：<br />主要为依赖，继承，合成<br />  依赖关系：<br />  &lt;dependencies&gt;<br />    &lt;dependency&gt;<br />      &lt;groupId&gt;junit&lt;/groupId&gt;<br />      &lt;artifactId&gt;junit&lt;/artifactId&gt;<br />      &lt;version&gt;4.0&lt;/version&gt;<br />      &lt;type&gt;jar&lt;/type&gt;<br />      &lt;scope&gt;test&lt;/scope&gt;<br />      &lt;optional&gt;true&lt;/optional&gt;<br />    &lt;/dependency&gt;<br />    ...<br />  &lt;/dependencies&gt;<br /><br />groupId, artifactId, version:描述了依赖的项目唯一标志<br />可以通过以下方式进行安装：<br /><br />使用以下的命令安装： <br />mvn install:install-file ?Dfile=non-<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>-proj.jar ?DgroupId=some.group ?DartifactId=non-<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>-proj ?Dversion=1 <br />创建自己的库,并配置，使用deploy:deploy-file <br />设置此依赖范围为system，定义一个系统路径。不提倡。<br />type:相应的依赖产品包形式，如jar，war <br />scope:用于限制相应的依赖范围，包括以下的几种变量：<br />compile ：默认范围，用于编译 <br />provided：类似于编译，但支持你期待jdk或者容器提供，类似于classpath <br />runtime:在执行时，需要使用 <br />test:用于test任务时使用 <br />system:需要外在提供相应得元素。通过systemPath来取得<br />systemPath: 仅用于范围为system。提供相应的路径 <br />optional: 标注可选，当项目自身也是依赖时。用于连续依赖时使用<br />   独占性    <br />   外在告诉<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>你只包括指定的项目，不包括相关的依赖。此因素主要用于解决版本冲突问题<br />  &lt;dependencies&gt;<br />    &lt;dependency&gt;<br />      &lt;groupId&gt;org.apache.<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>&lt;/groupId&gt;<br />      &lt;artifactId&gt;<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>-embedder&lt;/artifactId&gt;<br />      &lt;version&gt;2.0&lt;/version&gt;<br />      &lt;exclusions&gt;<br />        &lt;exclusion&gt;<br />          &lt;groupId&gt;org.apache.<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>&lt;/groupId&gt;<br />          &lt;artifactId&gt;<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>-core&lt;/artifactId&gt;<br />        &lt;/exclusion&gt;<br />      &lt;/exclusions&gt;<br />    &lt;/dependency&gt;<br />表示项目<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>-embedder需要项目<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>-core，但我们不想引用<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>-core<br /><br />继承关系<br />    另一个强大的变化,<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>带来的是项目继承。主要的设置：<br />定义父项目<br />&lt;project&gt;<br />  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;<br />  &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;<br />  &lt;artifactId&gt;my-parent&lt;/artifactId&gt;<br />  &lt;version&gt;2.0&lt;/version&gt;<br />  &lt;packaging&gt;pom&lt;/packaging&gt;<br />&lt;/project&gt;<br />    packaging 类型，需要pom用于parent和合成多个项目。我们需要增加相应的值给父pom，用于子项目继承。主要的元素如下：<br /><br />依赖型 <br />开发者和合作者 <br />插件列表 <br />报表列表 <br />插件执行使用相应的匹配ids <br />插件配置 <br />子项目配置<br />&lt;project&gt;<br />  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;<br />  &lt;parent&gt;<br />    &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;<br />    &lt;artifactId&gt;my-parent&lt;/artifactId&gt;<br />    &lt;version&gt;2.0&lt;/version&gt;<br />    &lt;relativePath&gt;../my-parent&lt;/relativePath&gt;<br />  &lt;/parent&gt;<br />  &lt;artifactId&gt;my-project&lt;/artifactId&gt;<br />&lt;/project&gt;<br />relativePath可以不需要，但是用于指明parent的目录，用于快速查询。<br /><br />dependencyManagement：<br />用于父项目配置共同的依赖关系，主要配置依赖包相同因素，如版本，scope。<br /><br />合成（或者多个模块）<br />    一个项目有多个模块，也叫做多重模块，或者合成项目。<br />如下的定义：<br />&lt;project&gt;<br />  &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;<br />  &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;<br />  &lt;artifactId&gt;my-parent&lt;/artifactId&gt;<br />  &lt;version&gt;2.0&lt;/version&gt;<br />  &lt;modules&gt;<br />    &lt;module&gt;my-project1&lt;module&gt;<br />    &lt;module&gt;my-project2&lt;module&gt;<br />  &lt;/modules&gt;<br />&lt;/project&gt;</p><p> </p><p> </p><p> </p><p> </p><div class="dp-highlighter"><div class="bar"><div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://topinking.javaeye.com/blog/212838#"><img alt="复制代码" src="http://topinking.javaeye.com/images/icon_copy.gif" /></a></div></div><ol class="dp-j"><li><span><span>&lt;!-- Build Settings --&gt;   </span></span></li><li><span>    &lt;build&gt;...&lt;/build&gt;   </span></li><li><span>    &lt;reporting&gt;...&lt;/reporting&gt;  </span></li></ol></div><pre class="java" style="DISPLAY: none" name="code">&lt;!-- Build Settings --&gt;
	&lt;build&gt;...&lt;/build&gt;
	&lt;reporting&gt;...&lt;/reporting&gt;

</pre>  
<p><br />build 设置<br />    主要用于编译设置，包括两个主要的元素，build和report<br />  build<br />    主要分为两部分，基本元素和扩展元素集合<br />注意：包括项目build和profile build<br />&lt;project&gt;<br />  &lt;!-- "Project Build" contains more elements than just the BaseBuild set --&gt;<br />  &lt;build&gt;...&lt;/build&gt;<br />  &lt;profiles&gt;<br />    &lt;profile&gt;<br />      &lt;!-- "Profile Build" contains a subset of "Project Build"s elements --&gt;<br />      &lt;build&gt;...&lt;/build&gt;<br />    &lt;/profile&gt;<br />  &lt;/profiles&gt;<br />&lt;/project&gt;<br /><br />基本元素<br />&lt;build&gt;<br />  &lt;defaultGoal&gt;install&lt;/defaultGoal&gt;<br />  &lt;directory&gt;${basedir}/target&lt;/directory&gt;<br />  &lt;finalName&gt;${artifactId}-${version}&lt;/finalName&gt;<br />  &lt;filters&gt;<br />    &lt;filter&gt;filters/filter1.properties&lt;/filter&gt;<br />  &lt;/filters&gt;<br />  ...<br />&lt;/build&gt;<br /><br /><br />defaultGoal: 定义默认的目标或者阶段。如install <br />directory: 编译输出的目录 <br />finalName: 生成最后的文件的样式 <br />filter: 定义过滤，用于替换相应的属性文件，使用<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>定义的属性。设置所有placehold的值<br /><br />资源(resources)<br />    你项目中需要指定的资源。如spring配置文件,log4j.properties<br />&lt;project&gt;<br />  &lt;build&gt;<br />    ...<br />    &lt;resources&gt;<br />      &lt;resource&gt;<br />        &lt;targetPath&gt;META-INF/plexus&lt;/targetPath&gt;<br />        &lt;filtering&gt;false&lt;/filtering&gt;<br />        &lt;directory&gt;${basedir}/src/main/plexus&lt;/directory&gt;<br />        &lt;includes&gt;<br />          &lt;include&gt;configuration.xml&lt;/include&gt;<br />        &lt;/includes&gt;<br />        &lt;excludes&gt;<br />          &lt;exclude&gt;**/*.properties&lt;/exclude&gt;<br />        &lt;/excludes&gt;<br />      &lt;/resource&gt;<br />    &lt;/resources&gt;<br />    &lt;testResources&gt;<br />      ...<br />    &lt;/testResources&gt;<br />    ...<br />  &lt;/build&gt;<br />&lt;/project&gt;<br /><br /><br />resources: resource的列表，用于包括所有的资源 <br />targetPath: 指定目标路径，用于放置资源，用于build <br />filtering: 是否替换资源中的属性placehold <br />directory: 资源所在的位置 <br />includes: 样式，包括那些资源 <br />excludes: 排除的资源 <br />testResources: 测试资源列表<br />插件<br />  在build时，执行的插件，比较有用的部分，如使用jdk 5.0编译等等<br />&lt;project&gt;<br />  &lt;build&gt;<br />    ...<br />    &lt;plugins&gt;<br />      &lt;plugin&gt;<br />        &lt;groupId&gt;org.apache.<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>.plugins&lt;/groupId&gt;<br />        &lt;artifactId&gt;<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>-jar-plugin&lt;/artifactId&gt;<br />        &lt;version&gt;2.0&lt;/version&gt;<br />        &lt;extensions&gt;false&lt;/extensions&gt;<br />        &lt;inherited&gt;true&lt;/inherited&gt;<br />        &lt;configuration&gt;<br />          &lt;classifier&gt;test&lt;/classifier&gt;<br />        &lt;/configuration&gt;<br />        &lt;dependencies&gt;...&lt;/dependencies&gt;<br />        &lt;executions&gt;...&lt;/executions&gt;<br />      &lt;/plugin&gt;<br />    &lt;/plugins&gt;<br />  &lt;/build&gt;<br />&lt;/project&gt;<br /><br />extensions: true or false，是否装载插件扩展。默认false <br />inherited: true or false，是否此插件配置将会应用于poms，那些继承于此的项目 <br />configuration: 指定插件配置 <br />dependencies: 插件需要依赖的包 <br />executions: 用于配置execution目标，一个插件可以有多个目标。<br />如下：<br />    &lt;plugin&gt;<br />        &lt;artifactId&gt;<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>-antrun-plugin&lt;/artifactId&gt;<br /><br />        &lt;executions&gt;<br />          &lt;execution&gt;<br />            &lt;id&gt;echodir&lt;/id&gt;<br />            &lt;goals&gt;<br />              &lt;goal&gt;run&lt;/goal&gt;<br />            &lt;/goals&gt;<br />            &lt;phase&gt;verify&lt;/phase&gt;<br />            &lt;inherited&gt;false&lt;/inherited&gt;<br />            &lt;configuration&gt;<br />              &lt;tasks&gt;<br />                &lt;echo&gt;Build Dir: ${project.build.directory}&lt;/echo&gt;<br />              &lt;/tasks&gt;<br />            &lt;/configuration&gt;<br />          &lt;/execution&gt;<br />        &lt;/executions&gt;<br />      &lt;/plugin&gt;<br />  说明：<br /><br />id:规定execution 的唯一标志 <br />goals: 表示目标 <br />phase: 表示阶段，目标将会在什么阶段执行 <br />inherited: 和上面的元素一样，设置false <span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>将会拒绝执行继承给子插件 <br />configuration: 表示此执行的配置属性<br /><br />插件管理<br />    pluginManagement：插件管理以同样的方式包括插件元素，用于在特定的项目中配置。所有继承于此项目的子项目都能使用。主要定义插件的共同元素<br /><br />扩展元素集合<br />主要包括以下的元素：<br />Directories<br />用于设置各种目录结构，如下：<br />  &lt;build&gt;<br />    &lt;sourceDirectory&gt;${basedir}/src/main/java&lt;/sourceDirectory&gt;<br />    &lt;scriptSourceDirectory&gt;${basedir}/src/main/scripts&lt;/scriptSourceDirectory&gt;<br />    &lt;testSourceDirectory&gt;${basedir}/src/test/java&lt;/testSourceDirectory&gt;<br />    &lt;outputDirectory&gt;${basedir}/target/classes&lt;/outputDirectory&gt;<br />    &lt;testOutputDirectory&gt;${basedir}/target/test-classes&lt;/testOutputDirectory&gt;<br />    ...<br />  &lt;/build&gt;<br /><br />Extensions<br /><br />表示需要扩展的插件，必须包括进相应的build路径。<br /><br />&lt;project&gt;<br />  &lt;build&gt;<br />    ...<br />    &lt;extensions&gt;<br />      &lt;extension&gt;<br />        &lt;groupId&gt;org.apache.<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>.wagon&lt;/groupId&gt;<br />        &lt;artifactId&gt;wagon-ftp&lt;/artifactId&gt;<br />        &lt;version&gt;1.0-alpha-3&lt;/version&gt;<br />      &lt;/extension&gt;<br />    &lt;/extensions&gt;<br />    ...<br />  &lt;/build&gt;<br />&lt;/project&gt;<br /><br />Reporting<br />    用于在site阶段输出报表。特定的<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span> 插件能输出相应的定制和配置报表。<br />  &lt;reporting&gt;<br />    &lt;plugins&gt;<br />      &lt;plugin&gt;<br />        &lt;outputDirectory&gt;${basedir}/target/site&lt;/outputDirectory&gt;<br />        &lt;artifactId&gt;<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>-project-info-reports-plugin&lt;/artifactId&gt;<br />        &lt;reportSets&gt;<br />          &lt;reportSet&gt;&lt;/reportSet&gt;<br />        &lt;/reportSets&gt;<br />      &lt;/plugin&gt;<br />    &lt;/plugins&gt;<br />  &lt;/reporting&gt;<br /><br />Report Sets<br />    用于配置不同的目标，应用于不同的报表<br />&lt;reporting&gt;<br />    &lt;plugins&gt;<br />      &lt;plugin&gt;<br />        ...<br />        &lt;reportSets&gt;<br />          &lt;reportSet&gt;<br />            &lt;id&gt;sunlink&lt;/id&gt;<br />            &lt;reports&gt;<br />              &lt;report&gt;javadoc&lt;/report&gt;<br />            &lt;/reports&gt;<br />            &lt;inherited&gt;true&lt;/inherited&gt;<br />            &lt;configuration&gt;<br />              &lt;links&gt;<br />                &lt;link&gt;<a href="http://java.sun.com/j2se/1.5.0/docs/api/%3C/link%3E"><font color="#aad0d0">http://java.sun.com/j2se/1.5.0/docs/api/&lt;/link&gt;</font></a> ;<br />              &lt;/links&gt;<br />            &lt;/configuration&gt;<br />          &lt;/reportSet&gt;<br />        &lt;/reportSets&gt;<br />      &lt;/plugin&gt;<br />    &lt;/plugins&gt;<br />  &lt;/reporting&gt;</p><p> </p><p> </p><p> </p><p> </p><p> </p><div class="dp-highlighter"><div class="bar"><div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://topinking.javaeye.com/blog/212838#"><img alt="复制代码" src="http://topinking.javaeye.com/images/icon_copy.gif" /></a></div></div><ol class="dp-j"><li><span><span>&lt;!-- More Project Information --&gt;   </span></span></li><li><span>    &lt;name&gt;...&lt;/name&gt;   </span></li><li><span>    &lt;description&gt;...&lt;/description&gt;   </span></li><li><span>    &lt;url&gt;...&lt;/url&gt;   </span></li><li><span>    &lt;inceptionYear&gt;...&lt;/inceptionYear&gt;   </span></li><li><span>    &lt;licenses&gt;...&lt;/licenses&gt;   </span></li><li><span>    &lt;organization&gt;...&lt;/organization&gt;   </span></li><li><span>    &lt;developers&gt;...&lt;/developers&gt;   </span></li><li><span>    &lt;contributors&gt;...&lt;/contributors&gt;  </span></li></ol></div><pre class="java" style="DISPLAY: none" name="code">&lt;!-- More Project Information --&gt;
	&lt;name&gt;...&lt;/name&gt;
	&lt;description&gt;...&lt;/description&gt;
	&lt;url&gt;...&lt;/url&gt;
	&lt;inceptionYear&gt;...&lt;/inceptionYear&gt;
	&lt;licenses&gt;...&lt;/licenses&gt;
	&lt;organization&gt;...&lt;/organization&gt;
	&lt;developers&gt;...&lt;/developers&gt;
	&lt;contributors&gt;...&lt;/contributors&gt;
</pre>  
<p><br />更多的项目信息<br />name:项目除了artifactId外，可以定义多个名称<br />description: 项目描述<br />url: 项目url<br />inceptionYear:创始年份<br /><br />Licenses<br />&lt;licenses&gt;<br />  &lt;license&gt;<br />    &lt;name&gt;Apache 2&lt;/name&gt;<br />    &lt;url&gt;<a href="http://www.apache.org/licenses/LICENSE-2.0.txt%3C/url%3E"><font color="#aad0d0">http://www.apache.org/licenses/LICENSE-2.0.txt&lt;/url&gt;</font></a> ;<br />    &lt;distribution&gt;repo&lt;/distribution&gt;<br />    &lt;comments&gt;A business-friendly OSS license&lt;/comments&gt;<br />  &lt;/license&gt;<br />&lt;/licenses&gt;</p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><div class="dp-highlighter"><div class="bar"><div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://topinking.javaeye.com/blog/212838#"><img alt="复制代码" src="http://topinking.javaeye.com/images/icon_copy.gif" /></a></div></div><ol class="dp-j"><li><span><span>&lt;!-- Environment Settings --&gt;   </span></span></li><li><span>&lt;<span class="hilite2"><font style="BACKGROUND-COLOR: #55ff55">issueManagement</font></span>&gt;...&lt;/<span class="hilite2"><font style="BACKGROUND-COLOR: #55ff55">issueManagement</font></span>&gt;   </span></li><li><span>&lt;ciManagement&gt;...&lt;/ciManagement&gt;   </span></li><li><span>&lt;mailingLists&gt;...&lt;/mailingLists&gt;   </span></li><li><span>&lt;scm&gt;...&lt;/scm&gt;   </span></li><li><span>&lt;prerequisites&gt;...&lt;/prerequisites&gt;   </span></li><li><span>&lt;repositories&gt;...&lt;/repositories&gt;   </span></li><li><span>&lt;pluginRepositories&gt;...&lt;/pluginRepositories&gt;   </span></li><li><span>&lt;distributionManagement&gt;...&lt;/distributionManagement&gt;   </span></li><li><span>&lt;profiles&gt;...&lt;/profiles&gt;  </span></li></ol></div><pre class="java" style="DISPLAY: none" name="code">	&lt;!-- Environment Settings --&gt;
	&lt;<span class="hilite2"><font style="BACKGROUND-COLOR: #55ff55">issueManagement</font></span>&gt;...&lt;/<span class="hilite2"><font style="BACKGROUND-COLOR: #55ff55">issueManagement</font></span>&gt;
	&lt;ciManagement&gt;...&lt;/ciManagement&gt;
	&lt;mailingLists&gt;...&lt;/mailingLists&gt;
	&lt;scm&gt;...&lt;/scm&gt;
	&lt;prerequisites&gt;...&lt;/prerequisites&gt;
	&lt;repositories&gt;...&lt;/repositories&gt;
	&lt;pluginRepositories&gt;...&lt;/pluginRepositories&gt;
	&lt;distributionManagement&gt;...&lt;/distributionManagement&gt;
	&lt;profiles&gt;...&lt;/profiles&gt;

</pre>  
<p><br />Organization<br />配置组织信息<br />  &lt;organization&gt;<br />    &lt;name&gt;Codehaus Mojo&lt;/name&gt;<br />    &lt;url&gt;<a href="http://mojo.codehaus.org%3c/url%3E"><font color="#aad0d0">http://mojo.codehaus.org&lt;/url&gt;</font></a> ;<br />  &lt;/organization&gt;<br /><br />Developers<br />配置开发者信息<br />&lt;developers&gt;<br />    &lt;developer&gt;<br />      &lt;id&gt;eric&lt;/id&gt;<br />      &lt;name&gt;Eric&lt;/name&gt;<br />      &lt;email&gt;eredmond@codehaus.org&lt;/email&gt;<br />      &lt;url&gt;<a href="http://eric.propellors.net%3c/url%3E"><font color="#aad0d0">http://eric.propellors.net&lt;/url&gt;</font></a> ;<br />      &lt;organization&gt;Codehaus&lt;/organization&gt;<br />      &lt;organizationUrl&gt;<a href="http://mojo.codehaus.org%3c/organizationUrl%3E"><font color="#aad0d0">http://mojo.codehaus.org&lt;/organizationUrl&gt;</font></a> ;<br />      &lt;roles&gt;<br />        &lt;role&gt;architect&lt;/role&gt;<br />        &lt;role&gt;developer&lt;/role&gt;<br />      &lt;/roles&gt;<br />      &lt;timezone&gt;-6&lt;/timezone&gt;<br />      &lt;properties&gt;<br />        &lt;picUrl&gt;<a href="http://tinyurl.com/prv4t%3C/picUrl%3E"><font color="#aad0d0">http://tinyurl.com/prv4t&lt;/picUrl&gt;</font></a> ;<br />      &lt;/properties&gt;<br />    &lt;/developer&gt;<br />  &lt;/developers&gt;<br /><br />Contributors<br />  &lt;contributors&gt;<br />    &lt;contributor&gt;<br />      &lt;name&gt;Noelle&lt;/name&gt;<br />      &lt;email&gt;some.name@gmail.com&lt;/email&gt;<br />      &lt;url&gt;<a href="http://noellemarie.com%3c/url%3E"><font color="#aad0d0">http://noellemarie.com&lt;/url&gt;</font></a> ;<br />      &lt;organization&gt;Noelle Marie&lt;/organization&gt;<br />      &lt;organizationUrl&gt;<a href="http://noellemarie.com%3c/organizationUrl%3E"><font color="#aad0d0">http://noellemarie.com&lt;/organizationUrl&gt;</font></a> ;<br />      &lt;roles&gt;<br />        &lt;role&gt;tester&lt;/role&gt;<br />      &lt;/roles&gt;<br />      &lt;timezone&gt;-5&lt;/timezone&gt;<br />      &lt;properties&gt;<br />        &lt;gtalk&gt;some.name@gmail.com&lt;/gtalk&gt;<br />      &lt;/properties&gt;<br />    &lt;/contributor&gt;<br />  &lt;/contributors&gt;<br /><br />环境设置<br /><br />Issue Management<br />    定义相关的bug跟踪系统，如bugzilla,testtrack,clearQuest等<br />  &lt;<span class="hilite2"><font style="BACKGROUND-COLOR: #55ff55">issueManagement</font></span>&gt;<br />    &lt;system&gt;Bugzilla&lt;/system&gt;<br />    &lt;url&gt;<a href="http://127.0.0.1/bugzilla%3C/url%3E"><font color="#aad0d0">http://127.0.0.1/bugzilla&lt;/url&gt;</font></a> ;<br />  &lt;/<span class="hilite2"><font style="BACKGROUND-COLOR: #55ff55">issueManagement</font></span>&gt;<br />Continuous Integration Management<br />连续整合管理，基于triggers或者timings<br />  &lt;ciManagement&gt;<br />    &lt;system&gt;continuum&lt;/system&gt;<br />    &lt;url&gt;<a href="http://127.0.0.1:8080/continuum%3C/url%3E"><font color="#aad0d0">http://127.0.0.1:8080/continuum&lt;/url&gt;</font></a> ;<br />    &lt;notifiers&gt;<br />      &lt;notifier&gt;<br />        &lt;type&gt;mail&lt;/type&gt;<br />        &lt;sendOnError&gt;true&lt;/sendOnError&gt;<br />        &lt;sendOnFailure&gt;true&lt;/sendOnFailure&gt;<br />        &lt;sendOnSuccess&gt;false&lt;/sendOnSuccess&gt;<br />        &lt;sendOnWarning&gt;false&lt;/sendOnWarning&gt;<br />        &lt;configuration&gt;&lt;address&gt;continuum@127.0.0.1&lt;/address&gt;&lt;/configuration&gt;<br />      &lt;/notifier&gt;<br />    &lt;/notifiers&gt;<br />  &lt;/ciManagement&gt;<br /><br />Mailing Lists<br />  &lt;mailingLists&gt;<br />    &lt;mailingList&gt;<br />      &lt;name&gt;User List&lt;/name&gt;<br />      &lt;subscribe&gt;user-subscribe@127.0.0.1&lt;/subscribe&gt;<br />      &lt;unsubscribe&gt;user-unsubscribe@127.0.0.1&lt;/unsubscribe&gt;<br />      &lt;post&gt;user@127.0.0.1&lt;/post&gt;<br />      &lt;archive&gt;<a href="http://127.0.0.1/user/%3C/archive%3E"><font color="#aad0d0">http://127.0.0.1/user/&lt;/archive&gt;</font></a> ;<br />      &lt;otherArchives&gt;<br />        &lt;otherArchive&gt;<a href="http://base.google.com/base/1/127.0.0.1%3C/otherArchive%3E"><font color="#aad0d0">http://base.google.com/base/1/127.0.0.1&lt;/otherArchive&gt;</font></a> ;<br />      &lt;/otherArchives&gt;<br />    &lt;/mailingList&gt;<br />  &lt;/mailingLists&gt;<br /><br />SCM<br />  软件配置管理，如cvs 和svn<br />  &lt;scm&gt;<br />    &lt;connection&gt;scm:svn:<a href="http://127.0.0.1/svn/my-project%3C/connection%3E"><font color="#aad0d0">http://127.0.0.1/svn/my-project&lt;/connection&gt;</font></a> ;<br />    &lt;developerConnection&gt;scm:svn:<a href="https://127.0.0.1/svn/my-project%3C/developerConnection%3E"><font color="#aad0d0">https://127.0.0.1/svn/my-project&lt;/developerConnection&gt;</font></a> ;<br />    &lt;tag&gt;HEAD&lt;/tag&gt;<br />    &lt;url&gt;<a href="http://127.0.0.1/websvn/my-project%3C/url%3E"><font color="#aad0d0">http://127.0.0.1/websvn/my-project&lt;/url&gt;</font></a> ;<br />  &lt;/scm&gt;<br /><br />Repositories<br /><br />配置同setting.xml中的开发库<br /><br />Plugin Repositories<br />配置同 repositories<br /><br />Distribution Management<br />用于配置分发管理，配置相应的产品发布信息,主要用于发布，在执行mvn deploy后表示要发布的位置<br />1 配置到文件系统<br />&lt;distributionManagement&gt;<br />&lt;repository&gt;<br />&lt;id&gt;proficio-repository&lt;/id&gt;<br />&lt;name&gt;Proficio Repository&lt;/name&gt;<br />&lt;url&gt;file://${basedir}/target/deploy&lt;/url&gt;<br />&lt;/repository&gt;<br />&lt;/distributionManagement&gt;<br />2 使用ssh2配置<br />&lt;distributionManagement&gt;<br />&lt;repository&gt;<br />&lt;id&gt;proficio-repository&lt;/id&gt;<br />&lt;name&gt;Proficio Repository&lt;/name&gt;<br />&lt;url&gt;scp://sshserver.yourcompany.com/deploy&lt;/url&gt;<br />&lt;/repository&gt;<br />&lt;/distributionManagement&gt;<br />3 使用sftp配置<br />&lt;distributionManagement&gt;<br />&lt;repository&gt;<br />&lt;id&gt;proficio-repository&lt;/id&gt;<br />&lt;name&gt;Proficio Repository&lt;/name&gt;<br />&lt;url&gt;sftp://ftpserver.yourcompany.com/deploy&lt;/url&gt;<br />&lt;/repository&gt;<br />&lt;/distributionManagement&gt;<br />4 使用外在的ssh配置<br />    编译扩展用于指定使用wagon外在ssh提供，用于提供你的文件到相应的远程服务器。<br />&lt;distributionManagement&gt;<br />&lt;repository&gt;<br />&lt;id&gt;proficio-repository&lt;/id&gt;<br />&lt;name&gt;Proficio Repository&lt;/name&gt;<br />&lt;url&gt;scpexe://sshserver.yourcompany.com/deploy&lt;/url&gt;<br />&lt;/repository&gt;<br />&lt;/distributionManagement&gt;<br />&lt;build&gt;<br />&lt;extensions&gt;<br />&lt;extension&gt;<br />&lt;groupId&gt;org.apache.<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>.wagon&lt;/groupId&gt;<br />&lt;artifactId&gt;wagon-ssh-external&lt;/artifactId&gt;<br />&lt;version&gt;1.0-alpha-6&lt;/version&gt;<br />&lt;/extension&gt;<br />&lt;/extensions&gt;<br />&lt;/build&gt;<br /><br />5 使用ftp配置<br />&lt;distributionManagement&gt;<br />&lt;repository&gt;<br />&lt;id&gt;proficio-repository&lt;/id&gt;<br />&lt;name&gt;Proficio Repository&lt;/name&gt;<br />&lt;url&gt;ftp://ftpserver.yourcompany.com/deploy&lt;/url&gt;<br />&lt;/repository&gt;<br />&lt;/distributionManagement&gt;<br />&lt;build&gt;<br />&lt;extensions&gt;<br />&lt;extension&gt;<br />&lt;groupId&gt;org.apache.<span class="hilite1"><font style="BACKGROUND-COLOR: #ffff00">maven</font></span>.wagon&lt;/groupId&gt;<br />&lt;artifactId&gt;wagon-ftp&lt;/artifactId&gt;<br />&lt;version&gt;1.0-alpha-6&lt;/version&gt;<br />&lt;/extension&gt;<br />&lt;/extensions&gt;<br />&lt;/build&gt;<br /><br />repository 对应于你的开发库，用户信息通过settings.xml中的server取得<br /><br />Profiles<br />类似于settings.xml中的profiles，增加了几个元素，如下的样式：<br />  &lt;profiles&gt;<br />    &lt;profile&gt;<br />      &lt;id&gt;test&lt;/id&gt;<br />      &lt;activation&gt;...&lt;/activation&gt;<br />      &lt;build&gt;...&lt;/build&gt;<br />      &lt;modules&gt;...&lt;/modules&gt;<br />      &lt;repositories&gt;...&lt;/repositories&gt;<br />      &lt;pluginRepositories&gt;...&lt;/pluginRepositories&gt;<br />      &lt;dependencies&gt;...&lt;/dependencies&gt;<br />      &lt;reporting&gt;...&lt;/reporting&gt;<br />      &lt;dependencyManagement&gt;...&lt;/dependencyManagement&gt;<br />      &lt;distributionManagement&gt;...&lt;/distributionManagement&gt;<br />    &lt;/profile&gt;<br />  &lt;/profiles&gt;</p><img src ="http://www.blogjava.net/libin2722/aggbug/319958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2010-05-03 16:55 <a href="http://www.blogjava.net/libin2722/articles/319958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转)Nexus入门指南（图文）</title><link>http://www.blogjava.net/libin2722/articles/280027.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Thu, 04 Jun 2009 08:32:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/280027.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/280027.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/280027.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/280027.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/280027.html</trackback:ping><description><![CDATA[
		<strong>关键字: maven nexus</strong>
		<h2>Nexus介绍</h2>
		<p>
				<a href="http://nexus.sonatype.org/">Nexus</a>
是Maven仓库管理器，如果你使用Maven，你可以从<a href="http://repo1.maven.org/maven2/">Maven中央仓库</a>
下载所需要的构件（artifact），但这通常不是一个好的做法，你应该在本地架设一个Maven仓库服务器，在代理远程仓库的同时维护本地仓库，以节
省带宽和时间，Nexus就可以满足这样的需要。此外，他还提供了强大的仓库管理功能，构件搜索功能，它基于REST，友好的UI是一个extjs的
REST客户端，它占用较少的内存，基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。</p>
		<p> </p>
		<h2>下载和安装</h2>
		<p>你可以从<a href="http://nexus.sonatype.org/downloads/">http://nexus.sonatype.org/downloads/</a>
下载最新版本的Nexus，笔者使用的是1.3.0版本。</p>
		<p>Nexus提供了两种安装方式，一种是内嵌Jetty的bundle，只要你有JRE就能直接运行。第二种方式是WAR，你只须简单的将其发布到web容器中即可使用。</p>
		<p> </p>
		<h4>
				<em>Bundle方式安装</em>
		</h4>
		<p>解压<em>nexus-webapp-1.3.0-bundle.zip</em>
至任意目录，如<em>D:\dev_tools</em>
，然后打开CMD，cd至目录<em>D:\dev_tools\nexus-webapp-1.3.0\bin\jsw\windows-x86-32</em>
，运行<strong>Nexus.bat</strong>
。你会看到Nexus的启动日志，当你看到“Started
SelectChannelConnector@0.0.0.0:8081”之后，说明Nexus启动成功了，然后打开浏览器，访问
http://127.0.0.1:8081/nexus，你会看到如下的页面：</p>
		<p>
				<img src="http://juvenshun.javaeye.com/upload/picture/pic/33305/92809f97-0f8b-3fc5-af00-56b90b9eb05f.png" alt="" style="vertical-align: baseline;" width="599" height="347" />
		</p>
		<p>要停止Nexus，Ctrl+C即可，此外InstallNexus.bat可以用来将Nexus安装成一个windows服务，其余的脚本则对应了启动，停止，暂停，恢复，卸载Nexus服务。</p>
		<p> </p>
		<h4>
				<em>WAR方式安装</em>
		</h4>
		<p>你需要有一个能运行的web容器，这里以Tomcat为例，加入Tomcat的安装目录位于<em>D:\dev_tools\apache-tomcat-6.0.18</em>
，首先我们将下载的<em>nexus-webapp-1.3.0.war</em>
重命名为<em>nexus.war</em>
，然后复制到<em>D:\dev_tools\apache-tomcat-6.0.18\webapps\nexus.war</em>
，然后启动CMD，cd到<em>D:\dev_tools\apache-tomcat-6.0.18\bin\</em>
目录，运行<strong>startup.bat</strong>
。一切OK，现在可以打开浏览器访问http://127.0.0.1:8080/nexus，你会得到和上图一样的界面。</p>
		<p> </p>
		<h2>代理外部Maven仓库</h2>
		<h4>
				<em>登陆</em>
		</h4>
		<p>要管理Nexus，你首先需要以管理员身份登陆，点击界面右上角的login，输入默认的登录名和密码：admin/admin123，登陆成功后，你会看到左边的导航栏增加了很多内容：</p>
		<p>
				<img src="http://juvenshun.javaeye.com/upload/picture/pic/33307/7b7bc35b-1661-380a-95f6-806e5fabc50b.png" alt="" style="vertical-align: baseline;" width="600" height="341" />
		</p>
		<p>这里，可以管理仓库，配置Nexus系统，管理任务，管理用户，角色，权限，查看系统的RSS源，管理及查看系统日志，等等。你会看到Nexus的功能十分丰富和强大，本文，笔者只介绍一些最基本的管理和操作。</p>
		<p> </p>
		<h4>
				<em>代理Maven中央仓库</em>
		</h4>
		<p>点击左边导航栏的Repositories，界面的主面板会显示所有一个所有仓库及仓库组的列表，你会看到它们的Type字段的值有group，hosted，proxy，virtual。这里我们不关心virtual，只介绍下另外三种类型：</p>
		<ul>
				<li>hosted，本地仓库，通常我们会部署自己的构件到这一类型的仓库。</li>
				<li>proxy，代理仓库，它们被用来代理远程的公共仓库，如maven中央仓库。</li>
				<li>group，仓库组，用来合并多个hosted/proxy仓库，通常我们配置maven依赖仓库组。</li>
		</ul>
		<p>由此我们知道，我们需要配置一个Maven中央仓库的proxy，其实Nexus已经内置了Maven
Central，但我们需要做一些配置。点击仓库列表中的Maven
Central，你会注意到它的Policy是release，这说明它不会代理远程仓库的snapshot构件，这是有原因的，远程仓库的
snapshot版本构件不稳定且不受你控制，使用这样的构件含有潜在的风险。然后我们发现主面板下方有三个Tab，分别为
Browse，Configuration和Mirrors，我们点击Configuration进行配置，你现在需要关心的是两个配置
项：“Remote Storage Location”为远程仓库的地址，对于Maven
Central来说是http://repo1.maven.org/maven2/；“Download Remote
Indexes”顾名思义是指是否下载远程索引文件，Maven
Central的该字段默认为False，这是为了防止大量Nexus无意识的去消耗中央仓库的带宽（中央仓库有大量的构件，其索引文件也很大）。这里我
们需要将其设置为True，然后点击Save。在Nexus下载的中央仓库索引文件之后，我们就可以在本地搜索中央仓库的所有构件。下图展示了我们刚才所
涉及的配置：</p>
		<p>
				<img src="http://juvenshun.javaeye.com/upload/picture/pic/33309/5af99752-a10d-3dd4-8524-00b24d930d87.png" alt="" style="vertical-align: baseline;" width="600" height="340" />
		</p>
		<p> </p>
		<h4>
				<em>添加一个代理仓库</em>
		</h4>
		<p>这里我们再举一个例子，我们想要代理Sonatype的公共仓库，其地址为：http://repository.sonatype.org
/content/groups/public/。步骤如下，在Repositories面板的上方，点击Add，然后选择Proxy
Repository，在下方的配置部分，我们填写如下的信息：Repository ID - sonatype；Repository Name
- Sonatype Repository；Remote Storage Location -
http://repository.sonatype.org/content/groups/public/。其余的保持默认值，需要注意的是
Repository Policy，我们不想代理snapshot构件，原因前面已经描述。然后点击Save。配置页面如下：</p>
		<p>
				<img src="http://juvenshun.javaeye.com/upload/picture/pic/33311/8c1fbf8e-d9c2-3e66-b051-770f677673c1.png" alt="" style="vertical-align: baseline;" width="601" height="345" />
		</p>
		<p> </p>
		<h2>管理本地Maven仓库</h2>
		<p>Nexus预定义了3个本地仓库，分别为Releases，Snapshots，和3rd
Party。这三个仓库都有各自明确的目的。Releases用于部署我们自己的release构件，Snapshots用于部署我们自己的
snapshot构件，而3rd
Party用于部署第三方构件，有些构件如Oracle的JDBC驱动，我们不能从公共仓库下载到，我们就需要将其部署到自己的仓库中。</p>
		<p>当然你也可以创建自己的本地仓库，步骤和创建代理仓库类似，点击Repository面板上方的Add按钮，然后选择Hosted
Repository，然后在下方的配置面板中输入id和name，注意这里我们不再需要填写远程仓库地址，Repository
Type则为不可修改的hosted，而关于Repository Policy，你可以根据自己的需要选择Release或者Snapshot，如图：</p>
		<p>
				<img src="http://juvenshun.javaeye.com/upload/picture/pic/33315/8d2b0297-9e7c-3808-aa99-c3b93dbff73a.png" alt="" style="vertical-align: baseline;" width="600" height="342" />
		</p>
		<p> </p>
		<h2>管理Maven仓库组</h2>
		<p>Nexus中仓库组的概念是Maven没有的，在Maven看来，不管你是hosted也好，proxy也好，或者group也好，对我都是一样
的，我只管根据groupId，artifactId，version等信息向你要构件。为了方便Maven的配置，Nexus能够将多个仓
库，hosted或者proxy合并成一个group，这样，Maven只需要依赖于一个group，便能使用所有该group包含的仓库的内容。</p>
		<p>Nexus预定义了“Public Repositories”和“Public Snapshot
Repositories”两个仓库组，前者默认合并所有预定义的Release仓库，后者默认合并所有预定义的Snapshot仓库。我们在本文前面的
部分创建了一个名为“Sonatype Repository”的仓库，现在将其合并到“Public Repositories”中。</p>
		<p>点击仓库列表中的“Public Repositories”，然后选择下方的"Configuration"
Tab，在配置面板中，将右边“Avaiable Repositories”中的“Sonatype
Repository”拖拽到左边的“Ordered Group Repository”中，如图：</p>
		<p>
				<img src="http://juvenshun.javaeye.com/upload/picture/pic/33317/6d83cb84-8270-3917-9568-85fb7677ba57.png" alt="" style="vertical-align: baseline;" width="597" height="339" />
		</p>
		<p>创建仓库组和创建proxy及hosted仓库类似，这里不再赘述。需要注意的是format字段需要填写“maven2”，添加你感兴趣的仓库即可。</p>
		<p> </p>
		<h2>搜索构件</h2>
		<p>在浩大的Maven仓库中一下下点击链接，浏览路径以寻找感兴趣的构件是一件很郁闷的事情。Nexus基于nexus-indexer提供构件搜索
功能，要想对仓库进行搜索，无论是hosted，proxy，或者group，你都必须确认索引文件存在。这一点对于代理仓库尤其重要，有些远程仓库可能
根本就没有索引，所以你无法搜索这些代理仓库。有些远程仓库的远程索引非常大，如中央仓库达到了70M左右，那么第一次下载索引需要花很多时间，所以要期
望得到搜索结果，确保看到如下的文件：</p>
		<p>
				<img src="http://juvenshun.javaeye.com/upload/picture/pic/33325/b7ea68b0-2f1e-32df-b31f-7c88a2ea6434.png" alt="" style="vertical-align: baseline;" width="600" height="340" />
		</p>
		<p>一旦你的Nexus拥有了本地或者远程仓库的索引文件，你就可以享受Nexus的构件搜索功能了。不论登陆与否，你都可以使用关键字进行模糊搜索，
比如我在左边导航栏上部的搜索框内输入junit，然后点击搜索按钮，右边立刻会分页显示500多条的junit相关构件信息。如果你了解更多的信息，你
也可以通过限定groupId，artifactId，version进行搜索，点击导航栏中的“Advanced
Search”，点击右边所有页面左上角的下拉框，选择“GAV Search”。笔者这里输入junit:junit:4.4，然后回车：</p>
		<p>
				<img src="http://juvenshun.javaeye.com/upload/picture/pic/33327/53e38196-56fb-3faa-ab22-c81c2aff92c8.png" alt="" style="vertical-align: baseline;" width="600" height="341" />
		</p>
		<p>选择一项搜索结果，在页面下方会显示“Artifact Information”的面板，你可以点击"artifact"或者"pom"下载对应文件，而该面板右边更显示了一个Maven依赖配置，你可以直接复制该配置到Maven POM中，这是个十分方便的特性。</p>
		<p>此外，值得一提的是，Nexus还支持基于classname的搜索，你只需点击搜索页面右上角的下拉框，选择“Classname Search”，然后输入类名即可，这里我不再赘述。</p>
		<p> </p>
		<h2>配置Maven使用Nexus</h2>
		<p>默认情况下，Maven依赖于中央仓库，这是为了能让Maven开箱即用，但仅仅这么做明显是错误的，这会造成大量的时间及带宽的浪费。既然文章的前面已经介绍了如何安装和配置Nexus，现在我们就要配置Maven来使用本地的Nexus，以节省时间和带宽资源。</p>
		<p>我们可以将Repository配置到POM中，但一般来说这不是很好的做法，原因很简单，你需要为所有的Maven项目重复该配置。因此，这里我将Repository的配置放到$user_home/.m2/settings.xml中：</p>
		<div class="dp-highlighter">
				<div class="bar">
						<div class="tools">Xml代码 <embed src="http://juvenshun.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%3Csettings%3E%0A...%0A%3Cprofiles%3E%0A%20%20%3Cprofile%3E%0A%20%20%20%20%3Cid%3Edev%3C%2Fid%3E%0A%20%20%20%20%3Crepositories%3E%0A%20%20%20%20%20%20%3Crepository%3E%0A%20%20%20%20%20%20%20%20%3Cid%3Elocal-nexus%3C%2Fid%3E%0A%20%20%20%20%20%20%20%20%3Curl%3Ehttp%3A%2F%2F127.0.0.1%3A8080%2Fnexus%2Fcontent%2Fgroups%2Fpublic%2F%3C%2Furl%3E%0A%20%20%20%20%20%20%20%20%3Creleases%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cenabled%3Etrue%3C%2Fenabled%3E%0A%20%20%20%20%20%20%20%20%3C%2Freleases%3E%0A%20%20%20%20%20%20%20%20%3Csnapshots%3E%0A%20%20%20%20%20%20%20%20%20%20%3Cenabled%3Etrue%3C%2Fenabled%3E%0A%20%20%20%20%20%20%20%20%3C%2Fsnapshots%3E%0A%20%20%20%20%20%20%3C%2Frepository%3E%0A%20%20%20%20%3C%2Frepositories%3E%0A%20%20%3C%2Fprofile%3E%0A%3C%2Fprofiles%3E%0A%3CactiveProfiles%3E%0A%20%20%3CactiveProfile%3Edev%3C%2FactiveProfile%3E%0A%3C%2FactiveProfiles%3E%0A...%0A%3C%2Fsettings%3E" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></embed></div>
				</div>
				<ol class="dp-xml" start="1">
						<li>
								<span>
										<span class="tag">&lt;</span>
										<span class="tag-name">settings</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>...  </span>
						</li>
						<li>
								<span>
										<span class="tag">&lt;</span>
										<span class="tag-name">profiles</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>  <span class="tag">&lt;</span><span class="tag-name">profile</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>    <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>dev</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>    <span class="tag">&lt;</span><span class="tag-name">repositories</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>      <span class="tag">&lt;</span><span class="tag-name">repository</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>        <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>local-nexus</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>        <span class="tag">&lt;</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>http://127.0.0.1:8080/nexus/content/groups/public/</span><span class="tag">&lt;/</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>        <span class="tag">&lt;</span><span class="tag-name">releases</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>          <span class="tag">&lt;</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span>true</span><span class="tag">&lt;/</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>        <span class="tag">&lt;/</span><span class="tag-name">releases</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>        <span class="tag">&lt;</span><span class="tag-name">snapshots</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>          <span class="tag">&lt;</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span>true</span><span class="tag">&lt;/</span><span class="tag-name">enabled</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>        <span class="tag">&lt;/</span><span class="tag-name">snapshots</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>      <span class="tag">&lt;/</span><span class="tag-name">repository</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>    <span class="tag">&lt;/</span><span class="tag-name">repositories</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>  <span class="tag">&lt;/</span><span class="tag-name">profile</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>
										<span class="tag">&lt;/</span>
										<span class="tag-name">profiles</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>
										<span class="tag">&lt;</span>
										<span class="tag-name">activeProfiles</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>  <span class="tag">&lt;</span><span class="tag-name">activeProfile</span><span class="tag">&gt;</span><span>dev</span><span class="tag">&lt;/</span><span class="tag-name">activeProfile</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>
										<span class="tag">&lt;/</span>
										<span class="tag-name">activeProfiles</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>...  </span>
						</li>
						<li>
								<span>
										<span class="tag">&lt;/</span>
										<span class="tag-name">settings</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
				</ol>
		</div>
		<pre style="display: none;" name="code" class="xml">&lt;settings&gt;
...
&lt;profiles&gt;
  &lt;profile&gt;
    &lt;id&gt;dev&lt;/id&gt;
    &lt;repositories&gt;
      &lt;repository&gt;
        &lt;id&gt;local-nexus&lt;/id&gt;
        &lt;url&gt;http://127.0.0.1:8080/nexus/content/groups/public/&lt;/url&gt;
        &lt;releases&gt;
          &lt;enabled&gt;true&lt;/enabled&gt;
        &lt;/releases&gt;
        &lt;snapshots&gt;
          &lt;enabled&gt;true&lt;/enabled&gt;
        &lt;/snapshots&gt;
      &lt;/repository&gt;
    &lt;/repositories&gt;
  &lt;/profile&gt;
&lt;/profiles&gt;
&lt;activeProfiles&gt;
  &lt;activeProfile&gt;dev&lt;/activeProfile&gt;
&lt;/activeProfiles&gt;
...
&lt;/settings&gt;</pre>
		<p>由于我们不能直接在settings.xml中插入&lt;repositories&gt;元素，这里我们编写了一个profile，并添加了一
个profile并使用&lt;activeProfile&gt;元素自动将这个profile激活。这里的local-nexus仓库指向了刚才我们
配置的Nexus中“Public
Repositories”仓库组，也就是说，所有该仓库组包含的仓库都能供我们使用。此外，我们通过&lt;releases&gt;
和&lt;snapshots&gt;元素激活了Maven对于仓库所有类型构件下载的支持，当然你也可以调节该配置，比如说禁止Maven从Nexus
下载snapshot构件。</p>
		<p>使用该配置，Maven就会从你的Nexus服务器下载构件了，速度和从Central下载可不是一个数量级的。</p>
		<p> </p>
		<h2>部署构件至Nexus</h2>
		<p>Nexus提供了两种方式来部署构件，你可以从UI直接上传，也可以配置Maven部署构件。</p>
		<p> </p>
		<h4>
				<em>通过Nexus UI部署</em>
		</h4>
		<p>有时候有个jar文件你无法从公共Maven仓库找到，但是你能从其它得到这个jar文件（甚至是POM），那么你完全可以将这个文件部署到Nexus中，使其成为标准流程的一部分。步骤如下：</p>
		<p>点击左边导航栏的"Repository"，在右边的仓库列表中选择一个仓库，如“3rd
Party”，然后会看到页面下方有四个tab，选择最后一个“Upload”，你会看到构件上传界面。选择你要上传的构件，并指定POM，（或者手工编
写GAV等信息），最后点击Upload，该构件就直接被部署到了Nexus的"3rd Party"仓库中。如图：</p>
		<p>
				<img src="http://juvenshun.javaeye.com/upload/picture/pic/33329/a882a8bc-80aa-3ce6-8365-6935b9f7aa55.png" alt="" style="vertical-align: baseline;" width="600" height="339" />
		</p>
		<h4>
				<br />
		</h4>
		<h4>
				<em>通过Maven部署</em>
		</h4>
		<p>更常见的用例是：团队在开发一个项目的各个模块，为了让自己开发的模块能够快速让其他人使用，你会想要将snapshot版本的构件部署到Maven仓库中，其他人只需要在POM添加一个对于你开发模块的依赖，就能随时拿到最新的snapshot。</p>
		<p>以下的pom.xml配置和settings.xml能让你通过Maven自动化部署构件：</p>
		<p>
				<em>pom.xml</em>
		</p>
		<div class="dp-highlighter">
				<div class="bar">
						<div class="tools">Xml代码 <embed src="http://juvenshun.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%3Cproject%3E%0A...%0A%3CdistributionManagement%3E%0A%20%20%3Crepository%3E%0A%20%20%20%20%3Cid%3Enexus-releases%3C%2Fid%3E%0A%20%20%20%20%20%20%3Cname%3ENexus%20Release%20Repository%3C%2Fname%3E%0A%20%20%20%20%20%20%3Curl%3Ehttp%3A%2F%2F127.0.0.1%3A8080%2Fnexus%2Fcontent%2Frepositories%2Freleases%2F%3C%2Furl%3E%0A%20%20%3C%2Frepository%3E%0A%20%20%3CsnapshotRepository%3E%0A%20%20%20%20%3Cid%3Enexus-snapshots%3C%2Fid%3E%0A%20%20%20%20%3Cname%3ENexus%20Snapshot%20Repository%3C%2Fname%3E%0A%20%20%20%20%3Curl%3Ehttp%3A%2F%2F127.0.0.1%3A8080%2Fnexus%2Fcontent%2Frepositories%2Fsnapshots%2F%3C%2Furl%3E%0A%20%20%3C%2FsnapshotRepository%3E%0A%3C%2FdistributionManagement%3E%0A...%0A%3C%2Fproject%3E" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></embed></div>
				</div>
				<ol class="dp-xml" start="1">
						<li>
								<span>
										<span class="tag">&lt;</span>
										<span class="tag-name">project</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>...  </span>
						</li>
						<li>
								<span>
										<span class="tag">&lt;</span>
										<span class="tag-name">distributionManagement</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>  <span class="tag">&lt;</span><span class="tag-name">repository</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>    <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>nexus-releases</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>      <span class="tag">&lt;</span><span class="tag-name">name</span><span class="tag">&gt;</span><span>Nexus Release Repository</span><span class="tag">&lt;/</span><span class="tag-name">name</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>      <span class="tag">&lt;</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>http://127.0.0.1:8080/nexus/content/repositories/releases/</span><span class="tag">&lt;/</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>  <span class="tag">&lt;/</span><span class="tag-name">repository</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>  <span class="tag">&lt;</span><span class="tag-name">snapshotRepository</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>    <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>nexus-snapshots</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>    <span class="tag">&lt;</span><span class="tag-name">name</span><span class="tag">&gt;</span><span>Nexus Snapshot Repository</span><span class="tag">&lt;/</span><span class="tag-name">name</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>    <span class="tag">&lt;</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</span><span class="tag">&lt;/</span><span class="tag-name">url</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>  <span class="tag">&lt;/</span><span class="tag-name">snapshotRepository</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>
										<span class="tag">&lt;/</span>
										<span class="tag-name">distributionManagement</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>...  </span>
						</li>
						<li>
								<span>
										<span class="tag">&lt;/</span>
										<span class="tag-name">project</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
				</ol>
		</div>
		<pre style="display: none;" name="code" class="xml">&lt;project&gt;
...
&lt;distributionManagement&gt;
  &lt;repository&gt;
    &lt;id&gt;nexus-releases&lt;/id&gt;
      &lt;name&gt;Nexus Release Repository&lt;/name&gt;
      &lt;url&gt;http://127.0.0.1:8080/nexus/content/repositories/releases/&lt;/url&gt;
  &lt;/repository&gt;
  &lt;snapshotRepository&gt;
    &lt;id&gt;nexus-snapshots&lt;/id&gt;
    &lt;name&gt;Nexus Snapshot Repository&lt;/name&gt;
    &lt;url&gt;http://127.0.0.1:8080/nexus/content/repositories/snapshots/&lt;/url&gt;
  &lt;/snapshotRepository&gt;
&lt;/distributionManagement&gt;
...
&lt;/project&gt;</pre>
		<p>
				<em>settings.xml</em>
		</p>
		<div class="dp-highlighter">
				<div class="bar">
						<div class="tools">Xml代码 <embed src="http://juvenshun.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%3Csettings%3E%0A...%0A%3Cservers%3E%0A%20%20%3Cserver%3E%0A%20%20%20%20%3Cid%3Enexus-releases%3C%2Fid%3E%0A%20%20%20%20%3Cusername%3Eadmin%3C%2Fusername%3E%0A%20%20%20%20%3Cpassword%3Eadmin123%3C%2Fpassword%3E%0A%20%20%3C%2Fserver%3E%0A%20%20%3Cserver%3E%0A%20%20%20%20%3Cid%3Enexus-snapshots%3C%2Fid%3E%0A%20%20%20%20%3Cusername%3Eadmin%3C%2Fusername%3E%0A%20%20%20%20%3Cpassword%3Eadmin123%3C%2Fpassword%3E%0A%20%20%3C%2Fserver%3E%20%20%0A%3C%2Fservers%3E%0A...%0A%3C%2Fsettings%3E" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></embed></div>
				</div>
				<ol class="dp-xml" start="1">
						<li>
								<span>
										<span class="tag">&lt;</span>
										<span class="tag-name">settings</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>...  </span>
						</li>
						<li>
								<span>
										<span class="tag">&lt;</span>
										<span class="tag-name">servers</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>  <span class="tag">&lt;</span><span class="tag-name">server</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>    <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>nexus-releases</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>    <span class="tag">&lt;</span><span class="tag-name">username</span><span class="tag">&gt;</span><span>admin</span><span class="tag">&lt;/</span><span class="tag-name">username</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>    <span class="tag">&lt;</span><span class="tag-name">password</span><span class="tag">&gt;</span><span>admin123</span><span class="tag">&lt;/</span><span class="tag-name">password</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>  <span class="tag">&lt;/</span><span class="tag-name">server</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>  <span class="tag">&lt;</span><span class="tag-name">server</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>    <span class="tag">&lt;</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>nexus-snapshots</span><span class="tag">&lt;/</span><span class="tag-name">id</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>    <span class="tag">&lt;</span><span class="tag-name">username</span><span class="tag">&gt;</span><span>admin</span><span class="tag">&lt;/</span><span class="tag-name">username</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>    <span class="tag">&lt;</span><span class="tag-name">password</span><span class="tag">&gt;</span><span>admin123</span><span class="tag">&lt;/</span><span class="tag-name">password</span><span class="tag">&gt;</span><span>  </span></span>
						</li>
						<li>
								<span>  <span class="tag">&lt;/</span><span class="tag-name">server</span><span class="tag">&gt;</span><span>    </span></span>
						</li>
						<li>
								<span>
										<span class="tag">&lt;/</span>
										<span class="tag-name">servers</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
						<li>
								<span>...  </span>
						</li>
						<li>
								<span>
										<span class="tag">&lt;/</span>
										<span class="tag-name">settings</span>
										<span class="tag">&gt;</span>
										<span>  </span>
								</span>
						</li>
				</ol>
		</div>
		<pre style="display: none;" name="code" class="xml">&lt;settings&gt;
...
&lt;servers&gt;
  &lt;server&gt;
    &lt;id&gt;nexus-releases&lt;/id&gt;
    &lt;username&gt;admin&lt;/username&gt;
    &lt;password&gt;admin123&lt;/password&gt;
  &lt;/server&gt;
  &lt;server&gt;
    &lt;id&gt;nexus-snapshots&lt;/id&gt;
    &lt;username&gt;admin&lt;/username&gt;
    &lt;password&gt;admin123&lt;/password&gt;
  &lt;/server&gt;  
&lt;/servers&gt;
...
&lt;/settings&gt;</pre>
		<p>这里我们配置所有的snapshot版本构件部署到Nexus的Snapshots仓库中，
所有的release构件部署到Nexus的Releases仓库中。由于部署需要登陆，因为我们在settings.xml中配置对应
Repository id的用户名和密码。</p>
		<p>然后，在项目目录中执行<strong>mvn deploy</strong>
，你会看到maven将项目构件部署到Nexus中，浏览Nexus对应的仓库，就可以看到刚才部署的构件。当其他人构建其项目时，Maven就会从Nexus寻找依赖并下载。</p>
		<p> </p>
		<h2>总结</h2>
		<p>本文介绍强大的仓库管理器——Nexus，包括如何下载安装Nexus，配置Nexus代理中央仓库，管理Nexus的代理仓库，本地仓库，以及仓
库组。并帮助你了解如何通过Nexus搜索构件。最后，如何在Maven中配置Nexus仓库，以及如何部署构件到Nexus仓库中。这些都是Nexus
中最基本也是最常用的功能。随着使用的深入，你会发现Nexus还有很多其它的特性，如用户管理，角色权限管理等等。</p>
		<p>Nexus的OSS版本是完全开源的，如果你有兴趣，你可以学习其源码，甚至自己实现一个REST客户端。</p>
		<p>马上拥抱Nexus吧，它是免费的！</p>
<img src ="http://www.blogjava.net/libin2722/aggbug/280027.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2009-06-04 16:32 <a href="http://www.blogjava.net/libin2722/articles/280027.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>nexus settings 设置</title><link>http://www.blogjava.net/libin2722/articles/277914.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Mon, 25 May 2009 15:09:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/277914.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/277914.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/277914.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/277914.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/277914.html</trackback:ping><description><![CDATA[
		<p>&lt;!--<br />Licensed to the Apache Software Foundation (ASF) under one<br />or more contributor license agreements.  See the NOTICE file<br />distributed with this work for additional information<br />regarding copyright ownership.  The ASF licenses this file<br />to you under the Apache License, Version 2.0 (the<br />"License"); you may not use this file except in compliance<br />with the License.  You may obtain a copy of the License at</p>
		<p>    <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></p>
		<p>Unless required by applicable law or agreed to in writing,<br />software distributed under the License is distributed on an<br />"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY<br />KIND, either express or implied.  See the License for the<br />specific language governing permissions and limitations<br />under the License.<br />--&gt;</p>
		<p>&lt;!--<br /> | This is the configuration file for Maven. It can be specified at two levels:<br /> |<br /> |  1. User Level. This settings.xml file provides configuration for a single user, <br /> |                 and is normally provided in $HOME/.m2/settings.xml.<br /> |<br /> |                 NOTE: This location can be overridden with the system property:<br /> |<br /> |                 -Dorg.apache.maven.user-settings=/path/to/user/settings.xml<br /> |<br /> |  2. Global Level. This settings.xml file provides configuration for all maven<br /> |                 users on a machine (assuming they're all using the same maven<br /> |                 installation). It's normally provided in <br /> |                 ${maven.home}/conf/settings.xml.<br /> |<br /> |                 NOTE: This location can be overridden with the system property:<br /> |<br /> |                 -Dorg.apache.maven.global-settings=/path/to/global/settings.xml<br /> |<br /> | The sections in this sample file are intended to give you a running start at<br /> | getting the most out of your Maven installation. Where appropriate, the default<br /> | values (values used when the setting is not specified) are provided.<br /> |<br /> |--&gt;<br />&lt;settings&gt;<br />  &lt;localRepository&gt;D:/maven-2.0.9/repository&lt;/localRepository&gt;</p>
		<p>
				<br />  &lt;!-- interactiveMode<br />   | This will determine whether maven prompts you when it needs input. If set to false,<br />   | maven will use a sensible default value, perhaps based on some other setting, for<br />   | the parameter in question.<br />   |<br />   | Default: true<br />  &lt;interactiveMode&gt;true&lt;/interactiveMode&gt;<br />  --&gt;</p>
		<p>  &lt;!-- offline<br />   | Determines whether maven should attempt to connect to the network when executing a build.<br />   | This will have an effect on artifact downloads, artifact deployment, and others.<br />   |<br />   | Default: false<br />  &lt;offline&gt;false&lt;/offline&gt;<br />  --&gt;</p>
		<p>  &lt;!-- proxies<br />   | This is a list of proxies which can be used on this machine to connect to the network.<br />   | Unless otherwise specified (by system property or command-line switch), the first proxy<br />   | specification in this list marked as active will be used.<br />   |--&gt;<br />  &lt;proxies&gt;<br />    &lt;!-- proxy<br />     | Specification for one proxy, to be used in connecting to the network.<br />     |<br />    &lt;proxy&gt;<br />      &lt;id&gt;optional&lt;/id&gt;<br />      &lt;active&gt;true&lt;/active&gt;<br />      &lt;protocol&gt;http&lt;/protocol&gt;<br />      &lt;username&gt;proxyuser&lt;/username&gt;<br />      &lt;password&gt;proxypass&lt;/password&gt;<br />      &lt;host&gt;proxy.host.net&lt;/host&gt;<br />      &lt;port&gt;80&lt;/port&gt;<br />      &lt;nonProxyHosts&gt;local.net,some.host.com&lt;/nonProxyHosts&gt;<br />    &lt;/proxy&gt;<br />    --&gt;<br />  &lt;/proxies&gt;</p>
		<p>  &lt;!-- servers<br />   | This is a list of authentication profiles, keyed by the server-id used within the system.<br />   | Authentication profiles can be used whenever maven must make a connection to a remote server.<br />   |--&gt;<br />  &lt;servers&gt;<br />    &lt;!-- server<br />     | Specifies the authentication information to use when connecting to a particular server, identified by<br />     | a unique name within the system (referred to by the 'id' attribute below).<br />     | <br />     | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are <br />     |       used together.<br />     |<br />    &lt;server&gt;<br />      &lt;id&gt;deploymentRepo&lt;/id&gt;<br />      &lt;username&gt;repouser&lt;/username&gt;<br />      &lt;password&gt;repopwd&lt;/password&gt;<br />    &lt;/server&gt;<br />    --&gt;<br />    <br />    &lt;!-- Another sample, using keys to authenticate.<br />    &lt;server&gt;<br />      &lt;id&gt;siteServer&lt;/id&gt;<br />      &lt;privateKey&gt;/path/to/private/key&lt;/privateKey&gt;<br />      &lt;passphrase&gt;optional; leave empty if not used.&lt;/passphrase&gt;<br />    &lt;/server&gt;<br />    --&gt;<br /> &lt;server&gt;<br />      &lt;id&gt;nexus&lt;/id&gt;<br />      &lt;username&gt;admin&lt;/username&gt;<br />      &lt;password&gt;admin123&lt;/password&gt;<br />    &lt;/server&gt;<br />  &lt;/servers&gt;</p>
		<p>  &lt;!-- mirrors<br />   | This is a list of mirrors to be used in downloading artifacts from remote repositories.<br />   | <br />   | It works like this: a POM may declare a repository to use in resolving certain artifacts.<br />   | However, this repository may have problems with heavy traffic at times, so people have mirrored<br />   | it to several places.<br />   |<br />   | That repository definition will have a unique id, so we can create a mirror reference for that<br />   | repository, to be used as an alternate download site. The mirror site will be the preferred <br />   | server for that repository.<br />   |--&gt;<br />  &lt;mirrors&gt;<br />    &lt;!-- mirror<br />     | Specifies a repository mirror site to use instead of a given repository. The repository that<br />     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used<br />     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.<br />     |<br />    &lt;mirror&gt;<br />      &lt;id&gt;mirrorId&lt;/id&gt;<br />      &lt;mirrorOf&gt;repositoryId&lt;/mirrorOf&gt;<br />      &lt;name&gt;Human Readable Name for this Mirror.&lt;/name&gt;<br />      &lt;url&gt;http://my.repository.com/repo/path&lt;/url&gt;<br />    &lt;/mirror&gt;<br />     --&gt;<br />  &lt;mirror&gt;<br />      &lt;id&gt;nexus&lt;/id&gt;           <br />      &lt;name&gt;Maven Repository Manager running on <a href="http://125.76.229.146:8080/nexus&lt;/name">http://125.76.229.146:8080/nexus&lt;/name</a>&gt;<br />      &lt;url&gt;http://125.76.229.146:8080/nexus/content/groups/public&lt;/url&gt;<br />      &lt;mirrorOf&gt;*&lt;/mirrorOf&gt;<br />    &lt;/mirror&gt;<br />  &lt;/mirrors&gt;<br />  <br />  &lt;!-- profiles<br />   | This is a list of profiles which can be activated in a variety of ways, and which can modify<br />   | the build process. Profiles provided in the settings.xml are intended to provide local machine-<br />   | specific paths and repository locations which allow the build to work in the local environment.<br />   |<br />   | For example, if you have an integration testing plugin - like cactus - that needs to know where<br />   | your Tomcat instance is installed, you can provide a variable here such that the variable is <br />   | dereferenced during the build process to configure the cactus plugin.<br />   |<br />   | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles<br />   | section of this document (settings.xml) - will be discussed later. Another way essentially<br />   | relies on the detection of a system property, either matching a particular value for the property,<br />   | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a <br />   | value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2_07'.<br />   | Finally, the list of active profiles can be specified directly from the command line.<br />   |<br />   | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact<br />   |       repositories, plugin repositories, and free-form properties to be used as configuration<br />   |       variables for plugins in the POM.<br />   |<br />   |--&gt;<br />  &lt;profiles&gt;<br />    &lt;!-- profile<br />     | Specifies a set of introductions to the build process, to be activated using one or more of the<br />     | mechanisms described above. For inheritance purposes, and to activate profiles via &lt;activatedProfiles/&gt;<br />     | or the command line, profiles have to have an ID that is unique.<br />     |<br />     | An encouraged best practice for profile identification is to use a consistent naming convention<br />     | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.<br />     | This will make it more intuitive to understand what the set of introduced profiles is attempting<br />     | to accomplish, particularly when you only have a list of profile id's for debug.<br />     |<br />     | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.<br />    &lt;profile&gt;<br />      &lt;id&gt;jdk-1.4&lt;/id&gt;</p>
		<p>      &lt;activation&gt;<br />        &lt;jdk&gt;1.4&lt;/jdk&gt;<br />      &lt;/activation&gt;</p>
		<p>      &lt;repositories&gt;<br />        &lt;repository&gt;<br />   &lt;id&gt;jdk14&lt;/id&gt;<br />   &lt;name&gt;Repository for JDK 1.4 builds&lt;/name&gt;<br />   &lt;url&gt;http://www.myhost.com/maven/jdk14&lt;/url&gt;<br />   &lt;layout&gt;default&lt;/layout&gt;<br />   &lt;snapshotPolicy&gt;always&lt;/snapshotPolicy&gt;<br /> &lt;/repository&gt;<br />      &lt;/repositories&gt;<br />    &lt;/profile&gt;<br />    --&gt;</p>
		<p>    &lt;!--<br />     | Here is another profile, activated by the system property 'target-env' with a value of 'dev',<br />     | which provides a specific path to the Tomcat instance. To use this, your plugin configuration<br />     | might hypothetically look like:<br />     |<br />     | ...<br />     | &lt;plugin&gt;<br />     |   &lt;groupId&gt;org.myco.myplugins&lt;/groupId&gt;<br />     |   &lt;artifactId&gt;myplugin&lt;/artifactId&gt;<br />     |   <br />     |   &lt;configuration&gt;<br />     |     &lt;tomcatLocation&gt;${tomcatPath}&lt;/tomcatLocation&gt;<br />     |   &lt;/configuration&gt;<br />     | &lt;/plugin&gt;<br />     | ...<br />     |<br />     | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to<br />     |       anything, you could just leave off the &lt;value/&gt; inside the activation-property.<br />     |<br />    &lt;profile&gt;<br />      &lt;id&gt;env-dev&lt;/id&gt;</p>
		<p>      &lt;activation&gt;<br />        &lt;property&gt;<br />   &lt;name&gt;target-env&lt;/name&gt;<br />   &lt;value&gt;dev&lt;/value&gt;<br /> &lt;/property&gt;<br />      &lt;/activation&gt;</p>
		<p>      &lt;properties&gt;<br />        &lt;tomcatPath&gt;/path/to/tomcat/instance&lt;/tomcatPath&gt;<br />      &lt;/properties&gt;<br />    &lt;/profile&gt;<br />    --&gt;<br />  &lt;/profiles&gt;</p>
		<p>  &lt;!-- activeProfiles<br />   | List of profiles that are active for all builds.<br />   |<br />  &lt;activeProfiles&gt;<br />    &lt;activeProfile&gt;alwaysActiveProfile&lt;/activeProfile&gt;<br />    &lt;activeProfile&gt;anotherAlwaysActiveProfile&lt;/activeProfile&gt;<br />  &lt;/activeProfiles&gt;<br />  --&gt;<br />&lt;/settings&gt;<br /></p>
<img src ="http://www.blogjava.net/libin2722/aggbug/277914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2009-05-25 23:09 <a href="http://www.blogjava.net/libin2722/articles/277914.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初学maven(4)-使用maven ant task实现非标准打包 </title><link>http://www.blogjava.net/libin2722/articles/250010.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Mon, 05 Jan 2009 15:27:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/250010.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/250010.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/250010.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/250010.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/250010.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: maven很强大，但是总有些事情干起来不是得心应手，没有使用ant时那种想怎么干就怎么干的流畅感。尤其当要打包一个特殊（相对maven的标准架构而且）时，常有不知所措的感觉。当然这个应该和自己对maven的了解不够有关，毕竟，&#8220;初学maven&#8221;嘛。&nbsp;&nbsp;&nbsp; 但是maven在依赖管理方面实在是太强大了，太喜欢，退回原来的ant方式完全不可能...&nbsp;&nbsp;<a href='http://www.blogjava.net/libin2722/articles/250010.html'>阅读全文</a><img src ="http://www.blogjava.net/libin2722/aggbug/250010.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2009-01-05 23:27 <a href="http://www.blogjava.net/libin2722/articles/250010.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初学maven(3)-使用nexus替代artifactory作为maven私服 </title><link>http://www.blogjava.net/libin2722/articles/250009.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Mon, 05 Jan 2009 15:26:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/250009.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/250009.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/250009.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/250009.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/250009.html</trackback:ping><description><![CDATA[之前看到过一些Nexus的介绍，由于刚开始接触maven时使用的私服是artifactory，因此没有太在意。今天想着既然Nexus能有胆量出来混，应该有点真本事才是，看了一下nexus的安装介绍，挺简单的，试试无妨。因此装上小试了一下，结果喜出望外，nexus的表现非常不错，尤其是在开启远程索引之后，简直太方便了。<br />
<br />
&nbsp;&nbsp;&nbsp; 于是决定放弃artifactory改而使用nexus作为自己的maven私服。恩，惭愧，颇有点喜新厌旧的味道，artifactory才装上来没有几天，就惨遭抛弃......<br />
<br />
&nbsp;&nbsp;&nbsp; 整理了一下，全过程记录如下：<br />
<br />
1. 首先下载Nexus<br />
&nbsp;&nbsp;&nbsp; 从官网http://nexus.sonatype.org/download.html下载下载最新版本，因为是在windows上安装，因此下载的是zip版本，大小大概是16m。<br />
&nbsp;&nbsp;&nbsp; <br />
2. 安装<br />
&nbsp;&nbsp;&nbsp; 简单解压缩下载的zip包到安装目录就可以了。<br />
&nbsp;&nbsp;&nbsp; 可执行文件在%nexus安装目录%\nexus-webapp-1.0.0\binjsw\windows-x86-32下：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; InstallNexus.bat/UninstallNexus.bat是安装/卸载nexus为windows service，如果需要设置nexus为开机自动启动就可以安装为windows service然后设置启动方式为自动。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Nexus.bat是直接在命令行中启动Nexus，如果不想安装Nexus为windows service，可以用这个文件来手工控制Nexus的启动退出。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
3. 配置nexus<br />
<br />
&nbsp;&nbsp;&nbsp; 首先登录，默认地址http://localhost:8081/nexus/，默认用户名密码为admin/admin123.<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 最重要的一件事情就是开启远程索引下载，索引这个功能实在是太好用了。<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; nexus默认是关闭远程索引下载功能的，主要是担心会造成对服务器的巨大负担，需要我们手工开启。<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 开启的方式：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 点击Administration菜单下面的Repositories，将这三个仓库Apache Snapshots，Codehaus Snapshots，Maven Central的Download Remote Indexes修改为true。然后在这三个仓库上分别右键，选择Re-index，这样Nexus就会去下载远程的索引文件。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
4. 配置maven<br />
&nbsp;&nbsp;&nbsp; 要让maven使用nexus作为私服，需要做一些设置，使用和原来设置artifactory相似的方法。修改~/.m2/settings.xml.<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 增加nexus的profile：<br />
<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">profile</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">id</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">nexus</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">id</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">repositories</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">repository</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">id</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">nexus</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">id</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">local&nbsp;private&nbsp;nexus</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">url</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">http://localhost:8081/nexus/content/groups/public</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">url</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">releases</span><span style="color: rgb(0,0,255)">&gt;&lt;</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">true</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;&lt;/</span><span style="color: rgb(128,0,0)">releases</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">snapshots</span><span style="color: rgb(0,0,255)">&gt;&lt;</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">false</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;&lt;/</span><span style="color: rgb(128,0,0)">snapshots</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">repository</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">repository</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">id</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">nexus</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">id</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">local&nbsp;private&nbsp;nexus</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">url</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">http://localhost:8081/nexus/content/groups/public-snapshots</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">url</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">releases</span><span style="color: rgb(0,0,255)">&gt;&lt;</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">false</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;&lt;/</span><span style="color: rgb(128,0,0)">releases</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">snapshots</span><span style="color: rgb(0,0,255)">&gt;&lt;</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">true</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;&lt;/</span><span style="color: rgb(128,0,0)">snapshots</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">repository</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">repositories</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">pluginRepositories</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">pluginRepository</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">id</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">nexus</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">id</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">local&nbsp;private&nbsp;nexus</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">url</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">http://localhost:8081/nexus/content/groups/public</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">url</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">releases</span><span style="color: rgb(0,0,255)">&gt;&lt;</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">true</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;&lt;/</span><span style="color: rgb(128,0,0)">releases</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">snapshots</span><span style="color: rgb(0,0,255)">&gt;&lt;</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">false</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;&lt;/</span><span style="color: rgb(128,0,0)">snapshots</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">pluginRepository</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">pluginRepository</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">id</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">nexus</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">id</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">local&nbsp;private&nbsp;nexus</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">name</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">url</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">http://localhost:8081/nexus/content/groups/public-snapshots</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">url</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">releases</span><span style="color: rgb(0,0,255)">&gt;&lt;</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">false</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;&lt;/</span><span style="color: rgb(128,0,0)">releases</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">snapshots</span><span style="color: rgb(0,0,255)">&gt;&lt;</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">true</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">enabled</span><span style="color: rgb(0,0,255)">&gt;&lt;/</span><span style="color: rgb(128,0,0)">snapshots</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">pluginRepository</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">pluginRepositories</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">profile</span><span style="color: rgb(0,0,255)">&gt;</span></div>
&nbsp; <br />
&nbsp;&nbsp;&nbsp; 修改activeProfiles为：<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">activeProfiles</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">activeProfile</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">nexus</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">activeProfile</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">activeProfiles</span><span style="color: rgb(0,0,255)">&gt;</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
5. 为nexus增加Artifact<br />
&nbsp;&nbsp;&nbsp; 有些特殊的Artifact无法从maven官网仓库中下载，比如sun的一些包，只好自己自行下载后添加到私服中。<br />
&nbsp;&nbsp;&nbsp; 在nexus中我选择将这些Artifact上传到默认安装就存在的仓库3rd Party中，右击仓库名，选择Upload Artifact。<br />
&nbsp;&nbsp;&nbsp; <br />
6. 在eclipse中使用索引功能<br />
&nbsp;&nbsp;&nbsp; 原来试过，使用artifactory私服也可以使用Artifact的索引功能，但是由于不知道怎么设置远程仓库的index，我只会设置<br />
&nbsp;&nbsp;&nbsp; 当前artifactory私服已有的Artifact的索引，对于还没有导入到artifactory私服的Artifact就没有办法索引了，很不方便，<br />
&nbsp;&nbsp;&nbsp; 毕竟刚开始使用maven时，所有用到的Artifact都是本地和私服没有而需要到远程仓库取的。<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; nexus中可以很方便的得到远程仓库的Artifact的索引，在上面&#8220;3. 配置nexus&#8221;就介绍过。下面介绍如何在eclispe里面<br />
&nbsp;&nbsp;&nbsp; 设置和使用索引功能：<br />
&nbsp;&nbsp;&nbsp; 1) 打开Maven Indexes 的eclispe view<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 在eclispe中选择window -&gt; show view -&gt; other ... -&gt; Maven -&gt; Maven Indexes<br />
&nbsp;&nbsp;&nbsp; 2) 添加nexus的index<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 右键菜单中选"add index", 在弹出的"Add Respository index"窗口中填入：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Repository URL: http://localhost:8081/nexus/content/groups/public<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Repository Id: nexus<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Index Update URL: 放空，暂时还不知道该怎么填<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 加入后eclispe会自动load一次index信息，然后就可以在新加入的index下可以拉出极大数量的Artifact信息。<br />
&nbsp;&nbsp;&nbsp; 3) 测试一下使用<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 找个pom.xml文件，右键 -&gt; Add Dependency， 然后填入一个关键词，比如我填入mina，马上填出和mina相关的一些<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 选择，我找到apache mina，双击最新一个版本。会自动在pom.xml文件中增加以下内容：<br />
<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">dependency</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">groupId</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">org.apache.directory.mina</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">groupId</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">artifactId</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">mina-core</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">artifactId</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">version</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)">0.9.5</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">version</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">dependency</span><span style="color: rgb(0,0,255)">&gt;</span></div>
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 然后Maven自动下载jar包，再将jar包加入项目的build path，全程自动化处理，真是爽啊。<br />
<br />
7. 为nexus增加新的proxy&nbsp; repository<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 方法很简单，administration -&gt; Repositories -&gt; add -&gt; proxy，填写后保存即可。但是要注意，nexus不会自动将新加入的repository添加到group中，而我们一般喜欢直接使用默认的"public repository" group， 比如前面我在maven的profile中就只设置了这一个URL： <span style="color: rgb(0,0,0)">http://localhost:8081/nexus/content/groups/public</span>。因此需要手工修改"public repository" group的设置，将刚才添加的proxy&nbsp; repository加到组中。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 推荐的repository有：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1) jboss &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://repository.jboss.com/maven2/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2) sun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://download.java.net/maven/2/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3)k-int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://developer.k-int.com/maven2/<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 加入这个纯粹是因为它有sun的jmxri/jmxtools这些Artifact，强烈鄙视sun，自己的官方repository居然没有。<br />
8. 总结<br />
&nbsp;&nbsp;&nbsp; 很明显，nexus无论是在界面，功能，操作上，都比artifactory强大的多。<br />
&nbsp;&nbsp;&nbsp; 因此推荐大家使用nexus替代artifactory作为maven私服。<br />
&nbsp;&nbsp;&nbsp; <br />
updates:<br />
1.&nbsp; 2008.11.28&nbsp; <br />
由于公司升级操作系统，告别老旧不堪的windows2000升级到vista，因此重新安装了nexus. 新版本的nexus似乎增加了不少小的功能比如对remote index的支持，具体没有深究，不过能不断更新实在是很令人欣慰。以后就打算用nexus了。<br />
&nbsp;&nbsp;&nbsp; 
<img src ="http://www.blogjava.net/libin2722/aggbug/250009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2009-01-05 23:26 <a href="http://www.blogjava.net/libin2722/articles/250009.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初学maven(2)-maven/artifactory/m2eclipse安装全过程</title><link>http://www.blogjava.net/libin2722/articles/250008.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Mon, 05 Jan 2009 15:25:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/250008.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/250008.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/250008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/250008.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/250008.html</trackback:ping><description><![CDATA[前段时间研究过一下maven，中途因为工作忙搁置了一段时间，重新再看时发现安装过程基本忘光。只好找资料看然后再来一遍，将maven，artifactory和m2eclipse安装使用的全过程记录整理出来，备忘。另外我想这些资料应该比较适合maven的入门新手，照做一遍就可以完成三个东西的安装设置，然后就可以学习和使用了。<br />
<br />
一. 安装maven<br />
&nbsp;&nbsp;&nbsp; 安装官方标准的安装方式（http://maven.apache.org/download.html#Installation）安装，步骤如下<br />
&nbsp;&nbsp;&nbsp; 1. 下载解压缩apache-maven-2.0.9-bin.zip到安装目录<br />
&nbsp;&nbsp;&nbsp; 2. 增加环境变量M2_HOME，指向maven的安装目录，注意不能以"\"结尾<br />
&nbsp;&nbsp;&nbsp; 3. 增加（可选）maven环境变量MAVEN_OPTS，值为"-Xms256m -Xmx512m"，后续可以增加其他<br />
&nbsp;&nbsp;&nbsp; 4. 修改Path，增加%M2_HOME%/bin到Path路径中<br />
&nbsp;&nbsp;&nbsp; 5. 确保JAVA_HOME环境变量存在并正确设置，确保%JAVA_HOME%/bin目录在Path路径中<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 安装完毕后，在命令行执行"mvn --version"检测maven是否正确安装。<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 补充：<br />
&nbsp;&nbsp;&nbsp; 1. 如果是使用代理上网，需要在maven的配置文件加入相应的代理信息<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 否则会报错：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; The pulgin 'org.apache.maven.plugins:maven-archetype-plugin' does not exist or valid version could be found<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ......<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 解决方法：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 打开文件 maven/conf/settings.xml，找到&lt;proxies&gt;，将原来注释掉的&lt;proxy&gt;打开，修改相应的信息即可。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 注意：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 1.）&lt;host&gt;iproxy-sh.cn.ao.ericsson.se&lt;/host&gt; 这里不要用"http://"开头，否则会无法连接<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 2. ) 如果用户名、密码不需要，可以删除&lt;username&gt;&lt;password&gt;，设置为空也行。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
<br />
二. 安装Artifactory<br />
<br />
&nbsp;&nbsp;&nbsp; 按照官方文档，http://wiki.jfrog.org/confluence/display/RTF/Installing， 标准安装，简单说就是三步：<br />
&nbsp;&nbsp;&nbsp; 1. 下载并解压缩最新版本的artifactory-1.3.0-beta-2.zip<br />
&nbsp;&nbsp;&nbsp; 2. 双击bin目录下的artifactory.bat文件，启动artifactory。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 注意必须保证JAVA_HOME正确设置，并且jdk的版本是5.0或更高。<br />
&nbsp;&nbsp;&nbsp; 3. 用浏览器打开http://localhost:8081/artifactory，使用admin/password登录<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 配置Artifactory，在Artifactory安装目录下的etc目录下，比较常用的是修改jetty.xml中的端口设置，将默认的8081端口<br />
&nbsp;&nbsp;&nbsp; 修改为其他。还有如果Artifactory是需要使用代码连接网络，需要修改artifactory.config.xml中的proxies。<br />
&nbsp;&nbsp;&nbsp; <br />
三. 安装m2eclipse插件<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 参照官网文档http://m2eclipse.codehaus.org/。<br />
&nbsp;&nbsp;&nbsp; 找了一下没有zip下载，只能用eclipse通过update site下载安装，无法使用我最喜欢的link方式，有些遗憾。<br />
&nbsp;&nbsp;&nbsp; 安装地址如下：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; http://m2eclipse.sonatype.org/update/<br />
&nbsp;&nbsp;&nbsp; 更新后会自动变成三个site，一个不可用，另外两个版本同步，有新旧两个版本可以选择，当然选最新的一个200807**的版本。<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 安装好后，就可以使用m2eclipse插件为项目增加pom.xml文件了。有了m2eclipse的图形界面使得操作显得很简单，容易理解和掌握。<br />
<br />
update 20081128: <br />
&nbsp;&nbsp;&nbsp; 升级操作系统到vista，jdk到6.7，eclipse到3.4后，安装新版本的maven，一切正常，但是启动时会弹出窗口，说maven<br />
需要eclipse在jdk下运行，而不应该是jre(奇怪以前安装时怎么没有这种要求，难道是新版本引入的新功能？)。按照提示给出的建议进行以下操作：<br />
<br />
1.要求修改eclipse.ini文件<br />
&nbsp;&nbsp;&nbsp; 加入两行代码，注意不要写在一行，否则无法生效。<br />
&nbsp;&nbsp;&nbsp; -vm<br />
&nbsp;&nbsp;&nbsp; C:\aoxj\soft\java\jdk\jdk67\bin\javaw<br />
2.设置installedJRE<br />
&nbsp;&nbsp;&nbsp; 直接进入eclipse的设置，在installedJRE中加入新的jre指向jdk，然后将默认的jre删除。<br />
&nbsp;&nbsp;&nbsp; <br />
四. 技巧小结<br />
&nbsp;&nbsp;&nbsp; 这几天的摸索中，发现一些maven和m2eclipse的使用小技巧，总结下来主要有以下几点：<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 1. repositories设置不要放到项目的pom.xml文件中<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 在使用Artifactory搭建私服后，肯定是需要将repositories设置为我们的私服地址的。下面的这段代码就可以完成我们<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 的需要：<br />
&nbsp;&nbsp;&nbsp; &nbsp; &lt;repositories&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;repository&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;id&gt;artifactory&lt;/id&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;name&gt;local private artifactory&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;url&gt;http://127.0.0.1:8081/artifactory/repo/&lt;/url&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/repository&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp; &lt;/repositories&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 但是这段代码放到哪里比较好呢？按照maven的设置，可以放到%MAVEN_HOME%/conf/settings.xml, ~/.m2/settings.xml和<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 项目的pom.xml文件中，上面三个设置可以覆盖，pom.xml中设置是最直接了当的。但是考虑到repositories信息是完全有<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 可能变化的，尤其是使用私服，万一公司的私服换个地址难道所有项目的pom.xml文件都设置一遍？ 还有pom.xml文件是用<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 来保存当前项目的多种依赖信息的，repositories信息应该和当前具体项目没有直接联系。因此不应该放到pom.xml文件中。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 尤其在pom.xml文件需要保存到cvs，subversion等版本控制系统中，可变的repositories信息就更不合适保存了。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 因此需要将repositories信息设置在%MAVEN_HOME%/conf/settings.xml或~/.m2/settings.xml，这样就足够灵活了。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 实践中发现一个比较奇怪的地方，我使用的是maven2.0.9版本，修改%MAVEN_HOME%/conf/settings.xml设置居然无效，只能<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; copy一份到~/.m2/settings.xml（这个文件默认是不会自动建立的），然后修改就可以正常生效了。没有查清楚原因，好在<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 这两个地方对我没有实质区别，放~/.m2/也能接受，只是要记得备份一次避免重装系统时被删除。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 2. settings.xml设置repositories的最简单方式<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 发现最简单的办法就是打开settings.xml文件最下面的activeProfiles设置：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;activeProfiles&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;activeProfile&gt;artifactory&lt;/activeProfile&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/activeProfiles&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 当然要先设置好对应的profile，对于简单场景，一个就足够了，这里我指向我搭建在本机的私服：<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &lt;profile&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;id&gt;artifactory&lt;/id&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp; &lt;repositories&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;repository&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;id&gt;artifactory&lt;/id&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;name&gt;local private artifactory&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;url&gt;http://127.0.0.1:8081/artifactory/repo/&lt;/url&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/repository&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp; &lt;/repositories&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp; &lt;pluginRepositories&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pluginRepository&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;id&gt;artifactory&lt;/id&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;local private artifactory&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url&gt;http://127.0.0.1:8081/artifactory/plugins-releases&lt;/url&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;snapshots&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;enabled&gt;false&lt;/enabled&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/snapshots&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/pluginRepository&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/pluginRepositories&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/profile&gt;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 顺便提一下settings.xml文件中localRepository的设置，这个设置用来知名localRepository的目录，默认不打开，使用默认值<br />
&nbsp;&nbsp;&nbsp; ~/.m2/repository，个人不喜欢，我就直接修改为固定位置：<br />
&nbsp;&nbsp;&nbsp; &lt;localRepository&gt;G:/soft/maven/localRepository&lt;/localRepository&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 3. dependency的classifier必须正确设置<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 在下载testng时出现问题，始终无法从官网下载testng的jar包，但是可以下载到testng-5.8.pom文件。反复查找才发现是<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; testng的jar包是区分jdk版本的，大家从这里可以看到<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; http://repo1.maven.org/maven2/org/testng/testng/5.8/<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; testng的jar包是有1.4和1.5的两种下载。增加classifier设置制定具体jdk版本之后就可以正常工作了。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 当然如果artifact没有jdk的差异就可以不需要设置这个参数。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;dependency&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;groupId&gt;org.testng&lt;/groupId&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;artifactId&gt;testng&lt;/artifactId&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;version&gt;5.8&lt;/version&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;classifier&gt;jdk15&lt;/classifier&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/dependency&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 4. groupId和artifactId的获取方式<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 使用maven，很直接就会遇到这个问题，到底这个东西的groupId和artifactId是什么呢？总不能瞎猜吧？<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 这里推荐这个artifact查询网站http://mvnrepository.com/，可以查找到25000+个artifact的信息，基本我们能用到的都<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 有了。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 结合官网http://repo1.maven.org/maven2/ 页面，基本可以搞定所有问题。上面testng需要设置classifier的问题我就是看到<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; http://repo1.maven.org/maven2/org/testng/testng/5.8/这个页面后才发现问题所在的。<br />
<br />
&nbsp;&nbsp;&nbsp; 5. attifactory的http proxy设置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上面attifactory安装时简单的介绍了一下 的http proxy设置，需要修改artifactory.config.xml中的&lt;proxies&gt;。但是这个是不够的，必须要再在&lt;remoteRepository&gt;中明确用&lt;proxyRef&gt;指明使用哪个代理，格式参考如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;remoteRepository&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .........<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;url&gt;http://people.apache.org/repo/m2-snapshot-repository&lt;/url&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;proxyRef&gt;your-proxy&lt;/proxyRef&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/remoteRepository&gt;<br />
proxies中key要对应好<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;proxies&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;proxy&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;key&gt;your-proxy&lt;/key&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ......<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/proxies&gt;<br />
&nbsp;&nbsp;&nbsp; <br />
五. 比较有价值的参考资料<br />
&nbsp;&nbsp;&nbsp; 陆续google到的一些资料，比较好.<br />
&nbsp;&nbsp;&nbsp; maven官网的资料<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 很全，很完整，非常值得看一遍，只是有点太多了，挺耗时间。而且是英文，暂时没有知道对应的中文版本。<br />
&nbsp;&nbsp;&nbsp; 一些细碎的资料，主要是blog之类<br />
&nbsp;&nbsp;&nbsp; 1) maven settings.xml <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; http://blog.csdn.net/totogogo/archive/2007/12/18/1946691.aspx<br />
&nbsp;&nbsp;&nbsp; 2)&nbsp; Maven dependency and repository<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; http://blog.csdn.net/totogogo/archive/2007/12/20/1956381.aspx<br />
&nbsp;&nbsp;&nbsp; 3)&nbsp; maven profiles<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; http://blog.csdn.net/totogogo/archive/2007/12/19/1953379.aspx<br />
&nbsp;&nbsp;&nbsp; 
<img src ="http://www.blogjava.net/libin2722/aggbug/250008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2009-01-05 23:25 <a href="http://www.blogjava.net/libin2722/articles/250008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初学maven(1)-常见小问题集锦</title><link>http://www.blogjava.net/libin2722/articles/250006.html</link><dc:creator>礼物</dc:creator><author>礼物</author><pubDate>Mon, 05 Jan 2009 15:23:00 GMT</pubDate><guid>http://www.blogjava.net/libin2722/articles/250006.html</guid><wfw:comment>http://www.blogjava.net/libin2722/comments/250006.html</wfw:comment><comments>http://www.blogjava.net/libin2722/articles/250006.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/libin2722/comments/commentRss/250006.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/libin2722/services/trackbacks/250006.html</trackback:ping><description><![CDATA[初学maven，遇到不少问题，记录下来，呵呵，依然是备忘兼共享。<br />
<br />
一. The pulgin 'org.apache.maven.plugins:<span class="hilite1">maven-archetype-plugin</span>' does <span class="hilite2">not</span> <span class="hilite3">exist</span> or valid version could be found <br />
<br />
&nbsp;&nbsp;&nbsp; 安装官方标准的安装方式（http://maven.apache.org/download.html#Installation）安装完毕，运行mvn --version没有问题。<br />
&nbsp;&nbsp;&nbsp; 然后按照"maven in 5 minutes"(http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html) 的第一个例子，执行<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0,0,0)">mvn&nbsp;archetype:create&nbsp;</span><span style="color: rgb(0,0,0)">-</span><span style="color: rgb(0,0,0)">DgroupId</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">com.mycompany.app&nbsp;</span><span style="color: rgb(0,0,0)">-</span><span style="color: rgb(0,0,0)">DartifactId</span><span style="color: rgb(0,0,0)">=</span><span style="color: rgb(0,0,0)">my</span><span style="color: rgb(0,0,0)">-</span><span style="color: rgb(0,0,0)">app<br />
</span></div>
&nbsp;&nbsp;&nbsp; 结果报错：<br />
&nbsp;&nbsp;&nbsp; The pulgin 'org.apache.maven.plugins:<span class="hilite1">maven-archetype-plugin</span>' does <span class="hilite2">not</span> <span class="hilite3">exist</span> or valid version could be found <br />
&nbsp;&nbsp;&nbsp; ......<br />
<br />
&nbsp;&nbsp;&nbsp; google了一下发现解决方案，原来是网络配置的问题，如果使用代理上网必须修改maven的配置文件加入相应的代理信息。<br />
&nbsp;&nbsp;&nbsp; 打开文件 maven/conf/settings.xml，找到&lt;proxies&gt;，将原来注释掉的&lt;proxy&gt;打开，修改相应的信息即可。<br />
&nbsp;&nbsp;&nbsp; 注意：<br />
&nbsp;&nbsp;&nbsp; 1.）&lt;host&gt;iproxy-sh.cn.ao.ericsson.se&lt;/host&gt; 这里不要用"http://"开头，否则会无法连接<br />
&nbsp;&nbsp;&nbsp; 2. ) 如果用户名、密码不需要，可以删除&lt;username&gt;&lt;password&gt;，设置为空也行。<br />
<br />
二. artifactory私服安装问题<br />
&nbsp;&nbsp;&nbsp; 对于单机来说，maven从远程仓库取jar包等资源是完全合理的。但是如果一个team甚至一个公司，每个人的maven都从远程仓库取，那么花在文件下载上的时间就太多了，而且完全没有必要。因此设置一个开发团队共享的Maven2的私服就必不可少了。<br />
&nbsp;&nbsp;&nbsp; Maven2的私服，当然首选artifactory。<br />
&nbsp;&nbsp;&nbsp; 跑到artifactory的官网，down下来最新的1.30-beta1，安装非常简单，windows下一个bat文件直接启动。之后修改maven配置，加入<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">repositories</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">repository</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">id</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">central</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">id</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">url</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">http:</span><span style="color: rgb(0,128,0)">//</span><span style="color: rgb(0,128,0)">localhost:8081/artifactory/repo&lt;/url&gt;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)"><br />
</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">snapshots</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">enabled</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,255)">false</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">enabled</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">snapshots</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">repository</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">repository</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">id</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">snapshots</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">id</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">url</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">http:</span><span style="color: rgb(0,128,0)">//</span><span style="color: rgb(0,128,0)">localhost:8081/artifactory/repo&lt;/url&gt;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)"><br />
</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">releases</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">enabled</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,255)">false</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">enabled</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">releases</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">repository</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">repositories</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">pluginRepositories</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">pluginRepository</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">id</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">central</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">id</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">url</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">http:</span><span style="color: rgb(0,128,0)">//</span><span style="color: rgb(0,128,0)">localhost:8081/artifactory/plugins-releases&lt;/url&gt;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)"><br />
</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">snapshots</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">enabled</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,255)">false</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">enabled</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">snapshots</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">pluginRepository</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">pluginRepository</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">id</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">snapshots</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">id</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">url</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">http:</span><span style="color: rgb(0,128,0)">//</span><span style="color: rgb(0,128,0)">localhost:8081/artifactory/plugins-snapshots&lt;/url&gt;&nbsp;&nbsp;</span><span style="color: rgb(0,128,0)"><br />
</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">releases</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;</span><span style="color: rgb(0,0,0)">enabled</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,255)">false</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">enabled</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">releases</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">pluginRepository</span><span style="color: rgb(0,0,0)">&gt;</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;<br />
&nbsp;</span><span style="color: rgb(0,0,0)">&lt;/</span><span style="color: rgb(0,0,0)">pluginRepositories</span><span style="color: rgb(0,0,0)">&gt;</span></div>
&nbsp;&nbsp;&nbsp; 但是发现执行maven命令时，maven完全没有从私服上取文件，还是到默认的maven官网去取了。反复修改都不行，最后发现问题可能出现在artifactory上：登录artifactory的控制台后，点Virtual Repositories --》 repo 后直接报错，页面抛ArrayIndexOutOfBoundsException！看url是http://localhost:8081/artifactory/repo/，这个不就是上面配置的地址吗？都抛异常了，让maven怎么取文件，找到问题了，虽然莫名其妙，试着删除后重新安装还是这个错误。晕倒，不清楚哪里出的问题，更不知该怎么改。看看版本是beta1，而且下载数量只有几十，想想可能是新版本的bug。<br />
&nbsp;&nbsp;&nbsp; 换成1.2.5final，一切都正常了。<br />
&nbsp;&nbsp;&nbsp; 我想应该是artifactory 1.3.0-beta1的bug吧。<br />
<br />
三.<span lang="EN-US"><span class="hilite1"><span class="hilite1">maven</span></span></span><span style="font-family: 宋体">的路径变量</span><span lang="EN-US"><span class="hilite2"><span class="hilite2">M2_REPO</span></span></span><br />
&nbsp;&nbsp;&nbsp;&nbsp; 使用mvn eclipse:eclipse命令生成eclipse project后，在eclipse中impot进来，编译出错，原来是maven使用到一个名为&#8220;<span lang="EN-US"><span class="hilite2"><span class="hilite2">M2_REPO</span></span></span>&#8221;的路径变量。<br />
&nbsp;&nbsp;&nbsp;&nbsp; google了一下，<span style="font-family: 宋体">eclipse中</span><span lang="EN-US"><span class="hilite2"><span class="hilite2">设置</span></span></span><span style="font-family: 宋体">变量</span><span lang="EN-US"><span class="hilite2"><span class="hilite2">M2_REPO的方式是：<br />
</span></span></span><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Window -&gt; Preferences -&gt; Java -&gt; Build Path -&gt; Classpath Variables</span><span style="font-family: 宋体">，</span><span lang="EN-US">New</span><span lang="EN-US">Name</span><span style="font-family: 宋体"> 填写"</span><span lang="EN-US"><span class="hilite2"><span class="hilite2">M2_REPO"</span></span></span><span style="font-family: 宋体">，路径为你的本地的</span><span lang="EN-US"><span class="hilite1"><span class="hilite1">maven</span></span></span><span style="font-family: 宋体">类库地址.</span>
<p class="MsoListParagraph" style="margin-left: 49.6pt; text-indent: -1cm; text-align: left" align="left"><span style="font-family: 宋体">设置后重新编译顺利通过，这样导入eclipse项目就完成了。</span></p>
<img src ="http://www.blogjava.net/libin2722/aggbug/250006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/libin2722/" target="_blank">礼物</a> 2009-01-05 23:23 <a href="http://www.blogjava.net/libin2722/articles/250006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>