﻿<?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-neverend的日志-随笔分类-工具技巧</title><link>http://www.blogjava.net/neverend/category/50726.html</link><description>不记录，终将被遗忘。
一万年太久，只争朝夕。
他们用数字构建了整个世界。</description><language>zh-cn</language><lastBuildDate>Tue, 07 Feb 2012 21:15:18 GMT</lastBuildDate><pubDate>Tue, 07 Feb 2012 21:15:18 GMT</pubDate><ttl>60</ttl><item><title>SVN代码merge</title><link>http://www.blogjava.net/neverend/archive/2012/02/04/369380.html</link><dc:creator>neverend</dc:creator><author>neverend</author><pubDate>Sat, 04 Feb 2012 10:13:00 GMT</pubDate><guid>http://www.blogjava.net/neverend/archive/2012/02/04/369380.html</guid><wfw:comment>http://www.blogjava.net/neverend/comments/369380.html</wfw:comment><comments>http://www.blogjava.net/neverend/archive/2012/02/04/369380.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/neverend/comments/commentRss/369380.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/neverend/services/trackbacks/369380.html</trackback:ping><description><![CDATA[头疼的SVN代码merge问题<br /><br />如何merge代码?<br />建议用命令搞merge，客户端图形界面不是很给力。<br />SVN 1.5以上版本，可以使用SVN的自动合并：<br />将主干合并到分支：<br />进入分支目录，执行命令： svn merge http://server/dir/trunk <br /><br />将分支合并到主干：<br />进入主干目录，执行命令： svn merge http://server/dir/branch&nbsp; --reintegrate<br />注： 如果之前进行过主干合并到分支的操作，请加参数--reintegrate，否则可能会有很多代码冲突出现。<br /><br />如果是SVN1.5以下版本，只能使用手工合并：<br /><div><pre><pre>进入主干目录，执行命令：svn merge -r version1:version2 http://server/dir/branch<br />将branch上从version1到version2所做的改动合并到主干，vension1 &lt; version2<br /><br />进入主干目录，执行命令： svn merge -c version1 http://server/dir/branch <br />表示将version1次所做的改动合并到主干<br /><br /></pre></pre></div>代码冲突如何解决？<br /><br />conficted<br /><br />tree conficted<img src ="http://www.blogjava.net/neverend/aggbug/369380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/neverend/" target="_blank">neverend</a> 2012-02-04 18:13 <a href="http://www.blogjava.net/neverend/archive/2012/02/04/369380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>maven依赖冲突</title><link>http://www.blogjava.net/neverend/archive/2012/02/03/369327.html</link><dc:creator>neverend</dc:creator><author>neverend</author><pubDate>Fri, 03 Feb 2012 07:51:00 GMT</pubDate><guid>http://www.blogjava.net/neverend/archive/2012/02/03/369327.html</guid><wfw:comment>http://www.blogjava.net/neverend/comments/369327.html</wfw:comment><comments>http://www.blogjava.net/neverend/archive/2012/02/03/369327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/neverend/comments/commentRss/369327.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/neverend/services/trackbacks/369327.html</trackback:ping><description><![CDATA[<div>项目开发过程中经常会碰到maven依赖冲突的问题，这篇post整理下maven依赖冲突产生的原因以及解决方案<br /><br />maven依赖冲突的产生是由maven传递性依赖造成的：<br /><br />什么是maven传递依赖？<br />&#8220;一个传递性依赖就是对于一个依赖的依赖。如果project-a依赖于project-b，而后<br />者接着依赖于project-c，那么project-c就被认为是project-a的传递性依赖。如<br />果project-c依赖于project-d，那么project-d就也被认为是project-a的传递性依<br />赖。Maven的部分吸引力是由于它能够管理传递性依赖，并且能够帮助开发者屏蔽掉跟<br />踪所有编译期和运行期依赖的细节。你可以只依赖于一些包如Spring Framework，而不<br />用担心Spring Framework的所有依赖，Maven帮你自动管理了，你不用自己去详细了解<br />配置。<br />Maven是怎样完成这件事情的呢？它建立一个依赖图，并且处理一些可能发生的冲突和<br />重叠。例如，如果Maven看到有两个项目依赖于同样的groupId和artifactId，它会自动<br />整理出使用哪个依赖，选择那个最新版本的依赖。虽然这听起来很方便，但在一些边界<br />情况中，传递性依赖会造成一些配置问题。在这种情况下，你可以使用依赖排除。&#8221;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8212;&#8212;摘自《Maven权威指南》<br /><br />什么情况下会产生依赖冲突？<br />举例说明：项目中的pom.xml里声明了对project-a1.0与project-b2.0的依赖，而project-a1.0又传递依赖于project-b1.0的版本。<br />假设maven经过分析之后决定使用project-b1.0的依赖，也就是打包的时候把project-b1.0.jar打进了war包。<br />war包部署在java容器中启动之后，如果依赖project-b2.0.jar中新添的类或方法，就会发现引用的类或者方法不存在。<br />这种现象就是依赖冲突。<br /><br />如何分析依赖冲突？<br />mvn dependency:tree<br /><br />冲突解决方案：<br />使用maven提供的&lt;exclusion&gt;标签。<br />举例说明：<br />如果你正依赖于一个类库，该类库又依赖于Sun JTA API，你会想要替换这个传递性依赖。<br />Hibernate是一个例子。Hibernate依赖于Sun JTA API，而后者在中央Maven仓库中不可用，因为它是不<br />能免费分发的。幸运的是，Apache Gernoimo项目创建了一些可以免费分发的独立实现<br />类库。为了用另外的依赖来替换这个传递性依赖，你需要排除这个传递性以依赖，然后<br />在你的项目中再声明一个依赖。下面展示了这样一个替换的样例。 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.hibernate</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">hibernate</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">3.2.5.ga</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">exclusions</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">exclusion</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">javax.transaction</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jta</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">exclusion</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">exclusions</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.apache.geronimo.specs</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">groupId</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">geronimo-jta_1.1_spec</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">1.1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">version</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">dependency</span><span style="color: #0000ff">&gt;</span></div><br /><br /></div> <img src ="http://www.blogjava.net/neverend/aggbug/369327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/neverend/" target="_blank">neverend</a> 2012-02-03 15:51 <a href="http://www.blogjava.net/neverend/archive/2012/02/03/369327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>