﻿<?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-zhb8015-文章分类-projectManagement</title><link>http://www.blogjava.net/zhb8015/category/51425.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 20 Apr 2012 03:09:28 GMT</lastBuildDate><pubDate>Fri, 20 Apr 2012 03:09:28 GMT</pubDate><ttl>60</ttl><item><title>eclipse  m2eclipse插件的安装和配置</title><link>http://www.blogjava.net/zhb8015/articles/375260.html</link><dc:creator>zhb8015</dc:creator><author>zhb8015</author><pubDate>Thu, 19 Apr 2012 05:53:00 GMT</pubDate><guid>http://www.blogjava.net/zhb8015/articles/375260.html</guid><wfw:comment>http://www.blogjava.net/zhb8015/comments/375260.html</wfw:comment><comments>http://www.blogjava.net/zhb8015/articles/375260.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhb8015/comments/commentRss/375260.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhb8015/services/trackbacks/375260.html</trackback:ping><description><![CDATA[<a href="http://wenku.baidu.com/view/582a336027d3240c8447ef60.html">http://wenku.baidu.com/view/582a336027d3240c8447ef60.html</a><img src ="http://www.blogjava.net/zhb8015/aggbug/375260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhb8015/" target="_blank">zhb8015</a> 2012-04-19 13:53 <a href="http://www.blogjava.net/zhb8015/articles/375260.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>maven 构建AppFuse原型过程（转）</title><link>http://www.blogjava.net/zhb8015/articles/375177.html</link><dc:creator>zhb8015</dc:creator><author>zhb8015</author><pubDate>Wed, 18 Apr 2012 13:46:00 GMT</pubDate><guid>http://www.blogjava.net/zhb8015/articles/375177.html</guid><wfw:comment>http://www.blogjava.net/zhb8015/comments/375177.html</wfw:comment><comments>http://www.blogjava.net/zhb8015/articles/375177.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhb8015/comments/commentRss/375177.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhb8015/services/trackbacks/375177.html</trackback:ping><description><![CDATA[http://appfuse.org/display/APF/AppFuse+QuickStart+-+Chinese&#160;
<img src ="http://www.blogjava.net/zhb8015/aggbug/375177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhb8015/" target="_blank">zhb8015</a> 2012-04-18 21:46 <a href="http://www.blogjava.net/zhb8015/articles/375177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>结合Maven2进行J2EE项目构建(转)</title><link>http://www.blogjava.net/zhb8015/articles/375116.html</link><dc:creator>zhb8015</dc:creator><author>zhb8015</author><pubDate>Wed, 18 Apr 2012 07:38:00 GMT</pubDate><guid>http://www.blogjava.net/zhb8015/articles/375116.html</guid><wfw:comment>http://www.blogjava.net/zhb8015/comments/375116.html</wfw:comment><comments>http://www.blogjava.net/zhb8015/articles/375116.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhb8015/comments/commentRss/375116.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhb8015/services/trackbacks/375116.html</trackback:ping><description><![CDATA[<div><font style="background-color: #cce8cf">original:<a href="http://www.blogjava.net/mlzry0612/archive/2011/07/11/223403.html">http://www.blogjava.net/mlzry0612/archive/2011/07/11/223403.html</a><br /><br />
<div class="postTitle"><a id="viewpost1_TitleUrl" class="postTitle2" href="http://www.blogjava.net/mlzry0612/articles/223403.html"><font color="#000000">结合Maven2进行J2EE项目构建</font></a> </div>
<div style="position: relative" id="related_topics" _madepositioned="true" _eventid="2">相关文章: <span class="close"><a title="关闭" onclick="$('related_topics').hide();return false;" href="http://www.javaeye.com/topic/230265#"><font color="#000000">&nbsp;</font></a></span> 
<ul><li><a href="http://www.javaeye.com/topic/107266" target="_blank"><font color="#000000">真正的maven私服搭建器--Artifactory </font></a></li><li><a href="http://www.javaeye.com/topic/98480" target="_blank"><font color="#000000">在eclipse项目中使用maven管理依赖</font></a> </li></ul><br /><span>推荐圈子: <a href="http://ibm-websphere.group.javaeye.com/" target="_blank"><font color="#000000">IBM WebSphere专区</font></a></span> <br /><a href="http://www.javaeye.com/wiki/topic/230265" target="_blank"><font color="#000000">更多相关推荐</font></a> </div><script type="text/javascript">
            new Draggable("related_topics");
          </script><strong>一.背景</strong> <br />Maven2 的基本原理很简单，采用远程仓库和本地仓库以及 pom（project object model）.xml ，将 pom.xml 中定义的 jar 文件从远程仓库下载到本地仓库，各个应用使用同一个本地仓库的 jar ，同一个版本的 jar 只需下载一次，而且避免每个应用都去拷贝 jar 。如图 1 。同时它采用了现在流行的插件体系架构，只保留最小的核心，其余功能都通过插件的形式提供，所以在执行 maven 任务时，才会自动下载需要的插件。这个特性也为客户系统的升级带来的很大的方便，客户每次升级的时候可以使用maven的远程部署功能自动下载最新的系统组件（jar），并重新打包部署，很大程度的减少的系统升级的工作量。 <br />理解Maven的原理，可以参考 Pear &#8213;&#8213;ＰＨＰ扩展与应用库（ the PHP Extension and Application Repository ），其原理非常类似，都有一个官方库，都是微内核，通过网络将需要的文件下载到本地，通过官方仓库将相应的类库进行统一管理。 <br />Maven2的基本安装方法网上很多，就到<a href="http://maven.apache.org/" target="_blank"><font color="#000000">http://maven.apache.org</font></a>下载一个最新版，解压后即可，如果需要在命令行运行，还需要设置一些环境变量，网上的资料很多，这里就不多说了。总之，安装成功后当你在命令行下执行maven -version后正确显示当前maven的版本即可。 <br />我们在项目中结合maven的进行开发的主要思路： <br />1.建立支持Maven2的开发框架，框架中结合了一些项目功能和工具类，并且此框架本身是一个eclipse工程，支持使用eclipse IDE的开发，并通过CVS可进行团队协作。 <br />2.在Maven2的pom.xml中制定开发框架的依赖包，并建立依赖包的团队管理本地服务器，使团队中的包依赖得到统一管理。 <br />3.每日下班后，在构建服务器上每日从cvs上下载各个团队开发人员的代码，统一进行集成构建和测试。由于是每日构建，所以发现的bug可及时反馈给开发人员进行修正，避免了一般开发过程中的bug长时间遗留的情况。 <br /><br /><strong>二.实施过程</strong> <br /><br />为了实现上述思路，我们分几步实施： <br /><br /><strong>1.首先需要构建一个系统的开发框架</strong>， <br />我们有两种方式构建， <br />其一是从零开始构建全新的框架，进入commond line，cd 到一个目录 ，执行 <br /><br /><br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>mvn&nbsp;archetype:create&nbsp;-DgroupId=com.mycompany.app&nbsp;-DartifactId=my-webapp&nbsp;-DarchetypeArtifactId=maven-archetype-webapp&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp</pre><br /><br />执行完毕后接下来cd 到项目目录my-webapp下，执行 <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>mvn&nbsp;</span><span class="keyword">package</span><span>&nbsp;&nbsp;</span></li><li><span>mvn&nbsp;eclipse:eclipse&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">mvn package
mvn eclipse:eclipse
</pre><br /><br />之后，打开eclipse，到其目录下导入项目，并手动编辑pom.xml文件，设定指定的jar包，比如加入一个jwebunit的jar包，我们需要在pom中添加一段： <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>&lt;dependency&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;jwebunit&lt;/groupId&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;jwebunit&lt;/artifactId&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;</span><span class="number">1.2</span><span>&lt;/version&gt; &nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;scope&gt;test&lt;/scope&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;exclusions&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;exclusion&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;rhino&lt;/groupId&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;js&lt;/artifactId&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/exclusion&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/exclusions&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/dependency&gt;&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">&lt;dependency&gt;
&lt;groupId&gt;jwebunit&lt;/groupId&gt;
&lt;artifactId&gt;jwebunit&lt;/artifactId&gt;
&lt;version&gt;1.2&lt;/version&gt;
&lt;scope&gt;test&lt;/scope&gt;
&lt;exclusions&gt;
&lt;exclusion&gt;
&lt;groupId&gt;rhino&lt;/groupId&gt;
&lt;artifactId&gt;js&lt;/artifactId&gt;
&lt;/exclusion&gt;
&lt;/exclusions&gt;
&lt;/dependency&gt;</pre><br /><br /><br />其中指定了包的名称，版本，使用的范围域等，pom.xml设置方式网上也是一堆一堆的，具体的可以自己搜搜。同时我们也可以使用maven2在 eclipse中的插件进行编辑，很方便，就不用记住那些该死的标签了。插件下载地址 <a href="http://m2eclipse.codehaus.org/" target="_blank"><font color="#000000">http://m2eclipse.codehaus.org</font></a> /update，将这个url填入到eclipse的Help-》Software Updates-&gt;find&amp;install中新建一个插件下载地址的对话框中即可下载。 <br />这种方式是完全自定义一个全新的工程后再进行框架搭建，比较累，尤其是添加依赖包的时候，需要根据自己的项目需要一个一个添加，很烦人，所以我们使用的第二个方法就直接找了一个现成的，到 Appfus 的网站<a href="http://appfuse.org/" target="_blank"><font color="#000000">http://appfuse.org/</font></a> 根据项目需要下载了一个项目框架作为原型，我们使用的是appfuse-light-webwork-ibatis- 1.8.2（webwork2.26,spring2.0,ibatis2.0），如果你使用的是其他的的技术，如 struts2，hibernate....直接到网站上下载一个相应的框架即可。appfuse框架使用maven2作为基本构建工具，其中自带的 pom.xml也替开发人员写好了，中所定义的依赖包可满足一般的开发需要，如需要自己指定的包，那么直接在其pom.xml中添加即可。要将这个框架作为eclipse工程使用，需要在解压后的框架目录下执行： <br /><br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>mvn&nbsp;eclipse:eclipse&nbsp;-DdownloadSources=</span><span class="keyword">true</span><span>&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">mvn eclipse:eclipse -DdownloadSources=true</pre><br /><br /><br />这个命令会将工程将框架转换为eclipse工程，并从远程下载jar包到本地仓库（window下是(C:\Documents and Settings\${username}\.m2\repository），之后执行： <br /><br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>mvn&nbsp;-Declipse.workspace=&lt;path-to-eclipse-workspace&gt;&nbsp;eclipse:add-maven-repo&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">mvn -Declipse.workspace=&lt;path-to-eclipse-workspace&gt; eclipse:add-maven-repo</pre><br /><br /><br />其中path-to-eclipse-workspace是本机的eclipse的worksapce的路径。执行后maven会在eclipse中建立一个M2_REPO环境变量，并将其中所有的jar包引入到工程中，完全自动化，十分方便。 <br />打开eclipse修改开发中的环境变量（我们项目中使用了Myeclipse插件），找到相应的工程，发现框架中已有一些代码，这是appfuse提供给开发人员的示例代码，我们可以按照自己以前项目的积累进行对框架进行完善，形成一套自己的开发框架，之后设置工程环境变量，在该项目中右键 -&gt;Myeclipse-&gt;add web capabilities-&gt;指定该工作空间下的Src/main/webapps作为WEB工程的根路径，并指定修改JAVA Build Path中 <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>src/main/java &nbsp;&nbsp;</span></li><li><span>src/main/resource &nbsp;&nbsp;</span></li><li><span>src/test/java&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">src/main/java
src/main/resource
src/test/java
</pre><br />的三个soucrefolder的outputpath 为scr/main/webapp/WEB-Inf/class，这样设置的目的是便于开发人员在本地进行部署测试，否则按照appfuse原有的工程设置是不能进行顺利部署的。 <br />至此，我们已经将Maven2结合到项目中，一开始可能对目录结构有些不适应，毕竟这是maven提供的项目框架格式，可以修改为自己习惯的，但是不建议这样做。设置完成后，cd到项目路径下，运行 <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>mvn&nbsp;test &nbsp;&nbsp;</span></li><li><span>mvn&nbsp;</span><span class="keyword">package</span><span>&nbsp;&nbsp;</span></span></li><li><span>mvn&nbsp;install&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">mvn test
mvn package
mvn install</pre><br /><br /><br />三个命令，均成功后，可上传到cvs/svn上面去，共享给项目组人员，各开发人员可直接使用，但有可能M2_REPO环境设置路径不一样（C:\Documents and Settings\${username}\.m2\repository，毕竟不是所有人都把系统装在C盘），需要手动修改一下。 <br /><br /><strong>2.建立开发团队内部仓库</strong> <br />为了便于团队的依赖包管理，我们不能全部使用官网的仓库，毕竟上面不具备我们项目开发所需要的所有的依赖包，所以我们需要为自己的团队建立一个内部仓库，可以自己管理所需的依赖包，建立一个内部仓库也十分简单（附录中我们会使用artifactory进行开发内部库建立）： <br /><br />首先需要一个 http server ，找台服务器装上 apache 就行。放一个空的 maven 目录到 htdocs 下，假设服务器 ip 为 192.168.0.1 ，确认能用 <a href="http://192.168.0.1/maven" target="_blank"><font color="#000000">http://192.168.0.1/maven</font></a> 访问到。 <br /><br />copy 本地仓库的jar包到服务器：对于 windows xp 来说一般在 C:\Documents and Settings\ ％ username%\.m2 下，其中％ username ％为操作系统登录用户名。这时你可以看到 ${user.home}/.m2/ 下有个 repository 目录，里面有很多的项目相关 jar ，目录按 groupId/ artifactId/version 排好。把 repository 目录整个拷贝到 apache 服务器的 maven 目录下，如果需要官方缺少的 jar 或公司内部 jar ，仿照这个目录结构，做好 jar 放到 maven 目录下。或者把包copy到本地，运行： <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>mvn&nbsp;install:install-file&nbsp;-Dfile=X:/path/mail-</span><span class="number">1.3</span><span>.jar&nbsp;-DartifactId=javamail&nbsp;-Dversion=</span><span class="number">1.3</span><span>.</span><span class="number">1</span><span>&nbsp;-Dpackaging=jar&nbsp;-DgroupId=javamail&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">mvn install:install-file -Dfile=X:/path/mail-1.3.jar -DartifactId=javamail -Dversion=1.3.1 -Dpackaging=jar -DgroupId=javamail</pre><br /><br /><br /><br />开发人员要使用内部仓库，只需修改本地工程pom.xml ，在 repository 配置后加上： <br /><br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>&lt;repository&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;companyName&lt;/id&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;http:</span><span class="comment">//&nbsp;${ip}/maven&lt;/url&gt; </span><span>&nbsp;&nbsp;</span></span></li><li><span>&lt;/repository&gt;&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">&lt;repository&gt;
&lt;id&gt;companyName&lt;/id&gt;
&lt;url&gt;http:// ${ip}/maven&lt;/url&gt;
&lt;/repository&gt;</pre><br /><strong><br />3.每日构建</strong> <br />为了保证项目质量，尽早的发现项目中的bug，我们需要每日对系统进行构建，这也是我们使用maven的初衷之一，maven的几个命令就可帮助我们完成这项任务，当然我们可以使用持续构建工具与maven结合实现定时自动构建。构建方式： <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>mvn&nbsp;test &nbsp;&nbsp;</span></li><li><span>mvn&nbsp;</span><span class="keyword">package</span><span>&nbsp;&nbsp;</span></span></li><li><span>mvn&nbsp;install&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">mvn test
mvn package
mvn install</pre><br /><br />maven 会自动编译，测试，运行所有的testcase，这也要求我们的开发人员一定要按照规则编写单元测试代码，否则每日构建的意义就不大了。appfuse框架中提供了很好的单元测试代码，包括针对数据库层，业务逻辑层，web展示层等等，如果我们能很好的编写这些单元测试，那么对于系统后续的缺陷管理和控制是大有裨益的。 <br /><br />构建完成后或构建时需要对最新版本的项目进行部署，便于次日安排测试人员进行测试，maven提供多多种部署方式，在pom.xml进行项目的部署配置，不同的部署方式根据协议的不同，配置方式也有所差异： <br />以文件方式部署 <br /><br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>&lt;project&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...] &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;distributionManagement&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;repository&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;proficio-repository&lt;/id&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;Proficio&nbsp;Repository&lt;/name&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;file:</span><span class="comment">//${basedir}/target/deploy&lt;/url&gt; </span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/repository&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/distributionManagement&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...] &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/project&gt;&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">&lt;project&gt;
[...]
&lt;distributionManagement&gt;
&lt;repository&gt;
&lt;id&gt;proficio-repository&lt;/id&gt;
&lt;name&gt;Proficio Repository&lt;/name&gt;
&lt;url&gt;file://${basedir}/target/deploy&lt;/url&gt;
&lt;/repository&gt;
&lt;/distributionManagement&gt;
[...]
&lt;/project&gt;</pre><br /><br />以SSH2方式部署 <br /><br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>&lt;project&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...] &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;distributionManagement&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;repository&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;proficio-repository&lt;/id&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;Proficio&nbsp;Repository&lt;/name&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;scp:</span><span class="comment">//sshserver.yourcompany.com/deploy&lt;/url&gt; </span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/repository&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/distributionManagement&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...] &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/project&gt;&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">&lt;project&gt;
[...]
&lt;distributionManagement&gt;
&lt;repository&gt;
&lt;id&gt;proficio-repository&lt;/id&gt;
&lt;name&gt;Proficio Repository&lt;/name&gt;
&lt;url&gt;scp://sshserver.yourcompany.com/deploy&lt;/url&gt;
&lt;/repository&gt;
&lt;/distributionManagement&gt;
[...]
&lt;/project&gt;</pre><br /><br />以SFTP方式部署 <br /><br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>&lt;project&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;[...] &nbsp;&nbsp;</span></li><li><span>&nbsp;&lt;distributionManagement&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;repository&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;proficio-repository&lt;/id&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;Proficio&nbsp;Repository&lt;/name&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;sftp:</span><span class="comment">//ftpserver.yourcompany.com/deploy&lt;/url&gt; </span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/repository&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&lt;/distributionManagement&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;[...] &nbsp;&nbsp;</span></li><li><span>&nbsp;&lt;/project&gt;&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">   &lt;project&gt;
[...]
&lt;distributionManagement&gt;
&lt;repository&gt;
&lt;id&gt;proficio-repository&lt;/id&gt;
&lt;name&gt;Proficio Repository&lt;/name&gt;
&lt;url&gt;sftp://ftpserver.yourcompany.com/deploy&lt;/url&gt;
&lt;/repository&gt;
&lt;/distributionManagement&gt;
[...]
&lt;/project&gt;</pre><br />以扩展SSH方式部署 <br /><br />目前为止上述3中方式已经被Maven包含，所以只要distributionManagement就可以了，但是使用扩展SSH命令部署的话你不仅需要配置distributionManagement还需要一个build extension，如下 <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>&lt;project&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...] &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;distributionManagement&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;repository&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;proficio-repository&lt;/id&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;Proficio&nbsp;Repository&lt;/name&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;scpexe:</span><span class="comment">//sshserver.yourcompany.com/deploy&lt;/url&gt; </span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/repository&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/distributionManagement&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;build&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;extensions&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;extension&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.apache.maven.wagon&lt;/groupId&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;wagon-ssh-external&lt;/artifactId&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;</span><span class="number">1.0</span><span>-alpha-</span><span class="number">6</span><span>&lt;/version&gt; &nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/extension&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/extensions&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/build&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...] &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&lt;/project&gt;&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code"> &lt;project&gt;
[...]
&lt;distributionManagement&gt;
&lt;repository&gt;
&lt;id&gt;proficio-repository&lt;/id&gt;
&lt;name&gt;Proficio Repository&lt;/name&gt;
&lt;url&gt;scpexe://sshserver.yourcompany.com/deploy&lt;/url&gt;
&lt;/repository&gt;
&lt;/distributionManagement&gt;
&lt;build&gt;
&lt;extensions&gt;
&lt;extension&gt;
&lt;groupId&gt;org.apache.maven.wagon&lt;/groupId&gt;
&lt;artifactId&gt;wagon-ssh-external&lt;/artifactId&gt;
&lt;version&gt;1.0-alpha-6&lt;/version&gt;
&lt;/extension&gt;
&lt;/extensions&gt;
&lt;/build&gt;
[...]
&lt;/project&gt;</pre><br />The build extension specifies the use of the Wagon external SSH provider, which does the work of moving your files to the remote server. Wagon is the general purpose transport mechanism used throughout Maven. <br /><br />以FTP方式部署 <br /><br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>&lt;project&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...] &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;distributionManagement&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;repository&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;proficio-repository&lt;/id&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;Proficio&nbsp;Repository&lt;/name&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;&lt;A&nbsp;href=</span><span class="string">"ftp://ftpserver.yourcompany.com/deploy&lt;/url&gt;"</span><span>&nbsp;target=_blank&gt;ftp://ftpserver.yourcompany.com/deploy&lt;/url&gt;&lt;/A&gt; &nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/repository&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/distributionManagement&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;build&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;extensions&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;extension&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.apache.maven.wagon&lt;/groupId&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;wagon-ftp&lt;/artifactId&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;</span><span class="number">1.0</span><span>-alpha-</span><span class="number">6</span><span>&lt;/version&gt; &nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/extension&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/extensions&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/build&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...] &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/project&gt;&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">&lt;project&gt;
[...]
&lt;distributionManagement&gt;
&lt;repository&gt;
&lt;id&gt;proficio-repository&lt;/id&gt;
&lt;name&gt;Proficio Repository&lt;/name&gt;
&lt;url&gt;<a href="ftp://ftpserver.yourcompany.com/deploy%3C/url%3E" target="_blank"><font color="#000000">ftp://ftpserver.yourcompany.com/deploy&lt;/url&gt;</font></a>
&lt;/repository&gt;
&lt;/distributionManagement&gt;
&lt;build&gt;
&lt;extensions&gt;
&lt;extension&gt;
&lt;groupId&gt;org.apache.maven.wagon&lt;/groupId&gt;
&lt;artifactId&gt;wagon-ftp&lt;/artifactId&gt;
&lt;version&gt;1.0-alpha-6&lt;/version&gt;
&lt;/extension&gt;
&lt;/extensions&gt;
&lt;/build&gt;
[...]
&lt;/project&gt;</pre><br /><br />一旦你配置好了相应的POM你可以执行下列命令来开始部署： <br />mvn deploy <br /><br />同时也可通过执行一下命令生成此项目的站点报告，供项目参与人员使用。 <br />mvn site <br /><br /><br /><strong>三. 结论 <br /></strong><br />maven的强大显而易见，有很多其他的特性本文没有提及，如对各类插件的支持，以及对项目模块划分和继承关系的管理，这些都是maven的特性，也是 maven对项目生命周期的详尽诠释，有兴趣深入的TX可以下载我在附件中提供的教程《Better Builds With Maven2》.同时我也提供我根据appfuse建立的一套项目框架，可在myeclipse环境下使用，大家可以共同探讨完善。 <br /><br /><strong>附1：使用artifactory为Maven2团队开发建立内部开发仓库详解</strong> <br />在真正使用Maven后是为团队进行定制，所以我们不应使用官网的开发库，应在本地建立一个内部开发库对团队的jar包进行管理，所以我们首先搭建一个内部库环境，除文章上面所述的搭建Apache服务器方法外，我们还可以使用artifactory(下载地址：<a href="http://www.jfrog.org/sites/artifactory%20/latest/" target="_blank"><font color="#000000">http://www.jfrog.org/sites/artifactory /latest/</font></a>)，一个很好的maven内部库的应用系统，下载后执行bin目录下的artifactory.bat命令即可。启动后可访问控制台http://内部库ip:8081/artifactory/验证服务是否成功启动。默认的用户名为admin，密码为password。artifactory最重要的是可配置第三方jar包，在deploy artifacts中加入并制定其groupId和artifactId即可 <br />（不要忘记更改本地的pom.xml文件引入新加的jar包）。 <br />在开发端我们需要更改全局配置文件setting.xml文件，将工程中setting.xml放入本地maven2-&gt;conf目录下，配置内部仓库的地址，只需要在setting.xml的mirrors元素中加入以下配置： <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://www.javaeye.com/topic/230265#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" _counted="undefined" /></a></div></div>
<ol class="dp-j"><li><span>&lt;mirror&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;emay&nbsp;local&lt;/id&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mirrorOf&gt;central&lt;/mirrorOf&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;emay&nbsp;local&nbsp;artifactory&lt;/name&gt; &nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;http:</span><span class="comment">//内部库ip:8081/artifactory/repo&lt;/url&gt; </span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mirror&gt;&nbsp;&nbsp;</span> </li></ol></div><pre style="display: none" class="java" name="code">&lt;mirror&gt;
&lt;id&gt;emay local&lt;/id&gt;
&lt;mirrorOf&gt;central&lt;/mirrorOf&gt;
&lt;name&gt;emay local artifactory&lt;/name&gt;
&lt;url&gt;http://内部库ip:8081/artifactory/repo&lt;/url&gt;
&lt;/mirror&gt;
</pre><br />这里要注意的是，在加入这段代码后我使用的appfuse框架中自带的应用服务器tomcat6进行构建，不能正常运行，报tomcat出错，把这段去掉或者在pom.xml中将应用服务器改为tomcat5.5后运行正常。看来maven还是有不少bug需要改进。 <br /><br />配置完成后再运行mvn install即可正常进行构建，maven会从本地内部库中寻找项目所依赖的jar包。运行mvn clean清除maven生成文件。 <br /><br /><br /><br /><strong>附2：maven2命令大全</strong> <br /><br />validate，验证工程是否正确，所有需要的资源是否可用。 <br />compile，编译项目的源代码。 <br />test-compile，编译项目测试代码。 <br />test，使用已编译的测试代码，测试已编译的源代码。 <br />package，已发布的格式，如jar，将已编译的源代码打包。 <br />integration-test，在集成测试可以运行的环境中处理和发布包。 <br />verify，运行任何检查，验证包是否有效且达到质量标准。 <br />install，把包安装在本地的repository中，可以被其他工程作为依赖来使用 <br />deploy，在整合或者发布环境下执行，将最终版本的包拷贝到远程的repository，使得其他的开发者或者工程可以共享。 <br />generate-sources，产生应用需要的任何额外的源代码，如xdoclet。 <br /></font></div><img src ="http://www.blogjava.net/zhb8015/aggbug/375116.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhb8015/" target="_blank">zhb8015</a> 2012-04-18 15:38 <a href="http://www.blogjava.net/zhb8015/articles/375116.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>svn server &amp; client(转)</title><link>http://www.blogjava.net/zhb8015/articles/375079.html</link><dc:creator>zhb8015</dc:creator><author>zhb8015</author><pubDate>Wed, 18 Apr 2012 03:31:00 GMT</pubDate><guid>http://www.blogjava.net/zhb8015/articles/375079.html</guid><wfw:comment>http://www.blogjava.net/zhb8015/comments/375079.html</wfw:comment><comments>http://www.blogjava.net/zhb8015/articles/375079.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhb8015/comments/commentRss/375079.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhb8015/services/trackbacks/375079.html</trackback:ping><description><![CDATA[<div><font style="background-color: #cce8cf">visual svn server:&nbsp; <a href="http://www.visualsvn.com/server/download/">http://www.visualsvn.com/server/download/</a><br />original:&nbsp;&nbsp; <a href="http://www.iteye.com/topic/653681">http://www.iteye.com/topic/653681</a><br />(<a href="http://www.cnblogs.com/duantianya/archive/2010/11/25/1888185.html">http://www.cnblogs.com/duantianya/archive/2010/11/25/1888185.html</a><br /><a href="http://www.oschina.net/p/visualsvn-server">http://www.oschina.net/p/visualsvn-server</a>)<br /><br /><br />SVN安装： <br />1、安装服务器 <br />######### 安装文件：SVN服务器############### <br /># http://www.collab.net/downloads/subversion # <br />CollabNetSubversion-server-1.6.9-1.win32.exe <br />点击安装CollabNetSubversion-server.exe，在第二个Next时选择Svnserve安装模式，去掉第二个勾即可。 <br />往下可以选择自己的安装路径，点击Next后Finish即可。 <br />程序被安装到：C:\Program Files\CollabNet\Subversion Server <br /><br />2、安装客户端 <br />######### 安装文件：SVN客户端############### <br /># http://tortoisesvn.net/downloads # <br />TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.msi <br />LanguagePack_1.6.8.19260-win32-zh_CN.msi <br />点击安装软件，按提示安装即可。 <br /><br />3、配置服务器 <br /><br />在CollabNetSubversion的安装完成后，使用命令行工具创建版本库 <br />a.创建一个名为SVN(例如D:\SVN\)的空文件夹，作为你的所有版本库的根 <br />b.在D:\SVN\里创建另一个目录SvnRepos <br />c.打开命令行窗口(或DOS窗口)，进入D:\SVN\目录，输入 <br />&nbsp; svnadmin create --fs-type fsfs ProjRepo <br />&nbsp; 这样，你就在D:\SVN\SvnRepos\ProjRepo创建了一个新的版本库。 <br /><br />4、修改配置文件 <br /><br />对三个文件进行配置，在D:\SVN\SvnRepos\ProjRepo\conf目录下,分别为svnserve.conf，passwd，authz <br /><br />&lt;1&gt; 文件svnserve.conf中把下面前面的#号去掉，修改如下： <br /><br />
<div class="quote_title">引用</div>
<div class="quote_div"><br />anon-access = none <br /><br />auth-access = write <br /><br />password-db = passwd <br /><br />authz-db = authz <br /></div><br /><br />&lt;2&gt; 文件passwd增加用户，修改如下： <br /><br />
<div class="quote_title">引用</div>
<div class="quote_div"><br />[users] <br /><br />admin = 123456 <br /></div><br /><br /><br /><br />&lt;3&gt; 文件authz修改如下： <br /><br />
<div class="quote_title">引用</div>
<div class="quote_div"><br />[groups] <br /><br />admin = admin <br /><br />[/] <br /><br />@admin = rw <br /><br />*= r <br /></div><br /><br />5、运行 svnserve <br /><br />在终端输入: <br />svnserve.exe -d -r D:\SVN\SvnRepos <br /><br />6、以服务形式运行 svnserve <br />使用普通用户直接运行 svnserve 通常不是最好的方法。它意味着你的服务器必须有一个用户登录，还要记着重新启动服务器后重新启动 svnserve。最好的方法是将 svnserve 作为 windows 服务运行。 <br />sc create svnserve binpath= "C:\Program Files\CollabNet\Subversion Server\svnserve.exe --service --root D:\SVN\SvnRepos\ProjRepo" displayname="Subversion" depend= tcpip start= auto <br /><br />#Add a description after creating the service# <br />运行下列代码 <br />sc description svnserve "Subversion server (svnserve)" <br /><br />7、在MyEclipse中配置SVN： <br /><br />方法一(我按照这种方法做的，而且没问题)： <br /><br />&lt;1&gt; 若没有该选项，则采用以下方法，点击Help&#8212;Software Updates---Add/Remove Software&#8230;在出现的对话框中选择Add---Add Site---输入name为SVN，URL为http://subclipse.tigris.org/update_1.0.x 点击OK--展开Personal Sites--选中subclipse-- 安装完成即可 <br /><br />打开MyEclipse菜单---Window---Show View---Other&#8230;.选择SVN---SVN资源库在Myeclipse右下角出现SVN透视图. <br /><br />&lt;2&gt; 在空白处右击---新建---资源库位置，在URL选项中写入：svn://localhost/,确定即可 <br /><br />在弹出的对话框中输入用户名和密码（为之前在文件修改的用户名和密码），确定&nbsp;&nbsp;&nbsp; <br /><br />&lt;3&gt; 右击建立的资源库位置，新建一个远程文件夹，填入文件夹名，Next&#8212;Finish <br /><br />&lt;4&gt;右击新建的远程文件夹，选 导入 选项，选择导入目标文件的目录，点击确定即可 <br /><br />&lt;5&gt;打开file菜单---New---Others&#8230;.---SVN---从SVN中出去项目---next---选定资源库位置---Next---选择目标远程文件夹---Next---为项目命名---Finish <br /><br />方法二（这种方法安装的subclipse会有一点点问题，解决起来还挺麻烦）： <br />&lt;1&gt;subclipse.tigris.org：http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240 <br />下载Subclipse，site-1.0.6.zip <br />&lt;2&gt;解压次文件，在Myeclipse菜单--help--Sofeware Update--Add/Remove SoftWare...---Add--Add Local--选中site-1.6.10.zip--选中Personal Sites--完成安装。 <br /></font></div><img src ="http://www.blogjava.net/zhb8015/aggbug/375079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhb8015/" target="_blank">zhb8015</a> 2012-04-18 11:31 <a href="http://www.blogjava.net/zhb8015/articles/375079.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>myeclipse6.x,7.x安装svn插件</title><link>http://www.blogjava.net/zhb8015/articles/375072.html</link><dc:creator>zhb8015</dc:creator><author>zhb8015</author><pubDate>Wed, 18 Apr 2012 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/zhb8015/articles/375072.html</guid><wfw:comment>http://www.blogjava.net/zhb8015/comments/375072.html</wfw:comment><comments>http://www.blogjava.net/zhb8015/articles/375072.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhb8015/comments/commentRss/375072.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhb8015/services/trackbacks/375072.html</trackback:ping><description><![CDATA[<div><font style="background-color: #cce8cf">一、myeclipse6.x,7.x安装svn插件<br />original:<a href="http://developer.51cto.com/art/201005/201684.htm">http://developer.51cto.com/art/201005/201684.htm</a><br />二、<a href="#other">其它安装方法</a>：<br />插件下载地址：注意版本应与客户端匹配<br /><a href="http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240">http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240</a><br /><br />
<p>本节主要讲解一下MyEclipse中SVN安装配置，其中主要是MyEclipse6.X和MyEclipse7.X，下面是具体的介绍，欢迎大家能和我一起学习。</p>
<p>1.SVN中文官方网站：http://www.subversion.org.cn<br />2.中文文档：http://www.subversion.org.cn/svnbook/</p>
<p>一、MyEclipse6.X<br />SVN安装配置在MyEclipse6.X中如何进行，6.x的操作比较简单，可通过官方提供的链接，利用MyEclipse内置的FindandInstall功能来安装。<br />1.打开Myeclipse，在菜单栏中选择Help&#8594;SoftwareUpdates&#8594;FindandInstall；<br />2.选择Searchfornewfeaturestoinstall，点击Next进入下一步；<br />3.点击&#8220;NewRemoteSite&#8221;按钮，在弹出的对话框中输入：<br />name：svn<br />url：http://subclipse.tigris.org/update_1.4.x<br />点击OK，关闭对话框，并点击Finish按钮，Myeclipse自动下载插件安装程序；<br />4.下载完插件之后，进入安装画面。<br />5.选择所要安装的SVN插件内容，这里去掉第二个选项SubclipseIntegrations，点击下一步；<br />6.选择&#8220;Iacceptthetermsinthelicenseagreements&#8221;并点击Next，直到点击Finish即可，进入下一步。<br />7.开始安装SVN插件，安装完成之后，重启Myeclipse。<br />以下为安装完成后的配置过程：<br />8.在菜单栏中选择Window&#8594;OpenPerspective&#8594;Other打开Myeclipse试图列表。这个时候Myeclipse的视图列表中，就出现了&#8220;SVNRepositoryExploring&#8221;一项。<br />9.打开&#8220;SVNRepositoryExploring&#8221;视图。在左边空白区域，单击右键&#8594;New&#8594;RepositoryLocation。<br />10.在Url一栏中输入http://IP/svn/projectName，点击Finish按钮。<br />11.输入用户名和密码，点击OK即可看到SVN下的目录结构了。</p>
<p>二、MyEclipse7.X</p>
<p>SVN安装配置在MyEclipse7.X中如何进行，要知道subclipse要正常运转必须在客户端有svn存在，实际上是存在svn这样subversioncommondline.<br />1.安装subversionclient<br />去这里http://subversion.tigris.org/看到有windows的安装介质奥。注意有些人爱用乌龟，现在的乌龟已经不再支持svncommondline。两种选择，要么安装http://www.sliksvn.com/en/download，要么安装http://www.collab.net/downloads/subversion/。<br />2.下载subclipse1.6的site包<br />把这个site-1.6.2解压开，features复制到C:\ProgramFiles\Genuitec\Common\features，我是默认安装的myeclipse，plugins复制到这里C:\ProgramFiles\Genuitec\Common\plugins。<br />3.修改配置文件<br />编辑C:\ProgramFiles\Genuitec\MyEclipse7.0\configuration\org.eclipse.equinox.simpleconfigurator\bundles.info：<br />在最后增加以下内容：<br />org.tigris.subversion.clientadapter,1.6.0.2,file:plugins\org.tigris.subversion.clientadapter_1.6.0.2.jar,4,false<br />org.tigris.subversion.clientadapter.javahl.win32,1.6.0.3,file:plugins\org.tigris.subversion.clientadapter.javahl.win32_1.6.0.3.jara,4,false<br />org.tigris.subversion.clientadapter.javahl,1.6.0.3,file:plugins\org.tigris.subversion.clientadapter.javahl_1.6.0.3.jar,4,false<br />org.tigris.subversion.clientadapter.svnkit,1.6.0.1,file:plugins\org.tigris.subversion.clientadapter.svnkit_1.6.0.1.jar,4,false<br />org.tigris.subversion.subclipse.core,1.6.2,file:plugins\org.tigris.subversion.subclipse.core_1.6.2.jar,4,false<br />org.tigris.subversion.subclipse.doc,1.3.0,file:plugins\org.tigris.subversion.subclipse.doc_1.3.0.jar,4,false<br />org.tigris.subversion.subclipse.graph,1.0.7,file:plugins\org.tigris.subversion.subclipse.graph_1.0.7.jar,4,false<br />org.tigris.subversion.subclipse.mylyn,2.0.4,file:plugins\org.tigris.subversion.subclipse.mylyn_2.0.4.jar,4,false<br />org.tigris.subversion.subclipse.mylyn,3.0.0,file:plugins\org.tigris.subversion.subclipse.mylyn_3.0.0.jar,4,false<br />org.tigris.subversion.subclipse.ui,1.6.2,file:plugins\org.tigris.subversion.subclipse.ui_1.6.2.jar,4,false<br />4.安装完成后的配置工作同6.x。本文讲解MyEclipse中SVN安装配置问题完毕，请关注本节的其他相关报道。</p>二、其它安装办法<a id="other" name="other"></a><br /><br /><strong><span style="color: #ff0000; font-size: 18px">方法二：link安装</span><br /></strong>安装subclipse, MyEclipse9.0 SVN插件<br />1、从官网下载site-1.6.10.zip文件,网址是:subclipse.tigris.org,<br />2、从中解压出features与 plugins文件夹，复制到E:\MyEclipse\myPlugin\svn里面，其它的*.xml文件不要。<br />3、在 E:\MyEclipse\MyEclipse9.0\dropins下新建文件svn.link,内容是:path=E:\\MyEclipse \\myPlugin\\svn保存。<br />4、(唛呆儿:这一步不确定，先不要删除)删除E:\MyEclipse\MyEclipse8.5\configuration \org.eclipse.update文件夹<br />5、重启myeclipse就一切正常了。[/size]<br />以上两种方法都尝试成功<br /><strong><span style="color: #ff0000; font-size: 18px">方法三:直接解压</span></strong><br />下载SVN插件：site-1.6.10.zip<br />解压后将其全部文件拷贝至：D:\Program Files\Genuitec\MyEclipse 8.5\dropins（MyEclipse的安装目录）<br />重启MyEclipse即可出现SVN！ 
<p><strong><span style="color: #ff0000; font-size: 18px">方法四：肯定可行的方法</span></strong></p>
<p>1、下载最新的SVN包：<br />http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240<br />2、在你的磁盘上任意位置创建文件夹：&#8220;myplugins/svn&#8221;。名字可以任取，为了方便插件管理，建议名称为&#8220;myplugins&#8221;。<br />3、将解压的svn里的两个文件夹拷贝到&#8220;myplugins/svn&#8221;下。<br />4、复制下列java代码，修改路径并执行：<br />package app;<br />import java.io.File;<br />import java.util.ArrayList;<br />import java.util.List;<br />/**<br />&nbsp;* MyEclipse9 插件配置代码生成器<br />&nbsp;*<br />&nbsp;*<br />&nbsp;*/<br />public class PluginConfigCreator<br />{<br />&nbsp;&nbsp;&nbsp; public PluginConfigCreator()<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; public void print(String path)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List&lt;String&gt; list = getFileList(path);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (list == null)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int length = list.size();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; length; i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String result = "";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String thePath = getFormatPath(getString(list.get(i)));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File file = new File(thePath);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (file.isDirectory())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String fileName = file.getName();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fileName.indexOf("_") &lt; 0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print(thePath);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] filenames = fileName.split("_");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String filename1 = filenames[0];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String filename2 = filenames[1];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = filename1 + "," + filename2 + ",file:/" + path + "/"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + fileName + "//,4,false";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(result);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if (file.isFile())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String fileName = file.getName();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fileName.indexOf("_") &lt; 0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int last = fileName.lastIndexOf("_");// 最后一个下划线的位置<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String filename1 = fileName.substring(0, last);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String filename2 = fileName.substring(last + 1, fileName<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .length() - 4);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = filename1 + "," + filename2 + ",file:/" + path + "/"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + fileName + ",4,false";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(result);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; public List&lt;String&gt; getFileList(String path)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path = getFormatPath(path);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path = path + "/";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File filePath = new File(path);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!filePath.isDirectory())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] filelist = filePath.list();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List&lt;String&gt; filelistFilter = new ArrayList&lt;String&gt;();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; filelist.length; i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String tempfilename = getFormatPath(path + filelist[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filelistFilter.add(tempfilename);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return filelistFilter;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; public String getString(Object object)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (object == null)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return String.valueOf(object);<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; public String getFormatPath(String path)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path = path.replaceAll("////", "/");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path = path.replaceAll("//", "/");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return path;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; public static void main(String[] args)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*你的插件的安装目录*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String plugin = "改成安装目录//Genuitec//svn";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new PluginConfigCreator().print(plugin);<br />&nbsp;&nbsp;&nbsp; }<br />}<br />这里需要注意的是修改成为刚才svn所在路径，建议改为绝对路径。比如d:/myplugins/svn/。。。<br />5、 找到&#8220;$myeclipse_home/configuration /org.eclipse.equinox.simpleconfigurator/&#8221;，打开其中的&#8220;bundles.inf&#8221;文件，为了防止分不清是不 是我们自己后加的东西，在最后面多回几次车，然后粘贴第4步运行后的代码，保存<br />6、重启myeclipse</p><br /><br /></font></div><img src ="http://www.blogjava.net/zhb8015/aggbug/375072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhb8015/" target="_blank">zhb8015</a> 2012-04-18 10:28 <a href="http://www.blogjava.net/zhb8015/articles/375072.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>svn权限控制</title><link>http://www.blogjava.net/zhb8015/articles/375071.html</link><dc:creator>zhb8015</dc:creator><author>zhb8015</author><pubDate>Wed, 18 Apr 2012 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/zhb8015/articles/375071.html</guid><wfw:comment>http://www.blogjava.net/zhb8015/comments/375071.html</wfw:comment><comments>http://www.blogjava.net/zhb8015/articles/375071.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhb8015/comments/commentRss/375071.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhb8015/services/trackbacks/375071.html</trackback:ping><description><![CDATA[<a href="http://wenku.baidu.com/view/4ff3a22f453610661ed9f4d6.html">http://wenku.baidu.com/view/4ff3a22f453610661ed9f4d6.html</a><img src ="http://www.blogjava.net/zhb8015/aggbug/375071.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhb8015/" target="_blank">zhb8015</a> 2012-04-18 10:19 <a href="http://www.blogjava.net/zhb8015/articles/375071.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>