Sky's blog

我和我追逐的梦

常用链接

统计

其他链接

友情链接

最新评论

project building

project building such as ant, maven, Ivy
解决jenkins执行sonar时重复执行两次test的问题
     摘要: 在jenkins上建立了一个job,通过标准的maven命令来执行打包测试和上传artifact到nexus仓库。随后发现有些性能问题:sonar的job执行时,需要重新update SCM,然后需要再次执行test,之后才能进行真正属于sonar的任务如代码检测等。明显update SCM 和执行test是重复了原有job,纯属浪费。这个重复执行问题随着测试案例和测试执行时间的增加,会越来越明显。因此需要考虑消除这里的重复问题,减少build的时间,并节约jenkins的资源。  阅读全文

posted @ 2012-02-14 14:53 sky ao 阅读(5596) | 评论 (5)  编辑

搜索maven依赖的网站推荐

posted @ 2011-12-02 16:06 sky ao 阅读(10538) | 评论 (4)  编辑

Maven 3.0 RC1 版本发布

posted @ 2010-09-20 10:08 sky ao 阅读(1893) | 评论 (0)  编辑

你走你的阳光道,我走我的独木桥:整合ant ivy 和testng
     摘要: 近期自己折腾自己,放着正统的maven + junit不用,却准备用ant + ivy 替代maven做依赖管理,用testng替代junit做单元测试。  阅读全文

posted @ 2010-05-31 16:11 sky ao 阅读(2456) | 评论 (0)  编辑

使用双重解析器的descriptor属性来严格约束依赖解析
     摘要: 在讨论这个问题前,先简单的介绍一下双重解析器的工作原理:顾名思义,双重解析是双重的:它由一个ivyResolver和一个 artifactResolver组成,其中ivyResolver负责解析ivy的模块描述符,而artifactResolver则用于解析制品。换言之,ivyResolver用来指明需要什么,而artifactResolver则负责获取具体的制品文件。

第一次在学习ivy的过程中看到ivy中的双重解析器,就感觉设计非常的不错,可以比较好的解决这方面的问题。只要维护好ivyResolver中的依赖,则整个系统中的依赖都被限制在这个范围中。比如如果有人想用spring2.5.6之外的版本,哼哼,ivyResolver解析器会不工作的......

但是,在实际的使用过程中发现,双重解析器的工作模式有点问题:如果目标依赖在ivyResolver中可以找到则情况正常,但是如果目标依赖在 ivyResolver中没有定义,ivy居然会在artifactResolver的继续查找!然后报告说依赖解析成功已下载云云,而不是我  阅读全文

posted @ 2009-11-04 13:40 sky ao 阅读(1725) | 评论 (0)  编辑

让ivy支持maven的classifier属性
     摘要: 在maven中,对于一个依赖,除了groupId,artifactId,version这三个属性来作为标志之外,还有一个特殊的属性可用: classifier。

ivy中依赖对应的有属性org,name,rev,分别对应到maven中的groupId,artifactId,version.

但是dependency没有和maven的classifier属性相对应的属性,因此无法表示dependency的classifier。这样就出现问题了,比如上面的testng 的例子,在ivy中如果将对testng的依赖定义写成上面的样子,则解析时是无法获取到我们想到的依赖 testng-5.10.jar的。

那么,在ivy中如何指定classifier属性呢?  阅读全文

posted @ 2009-10-15 01:56 sky ao 阅读(2755) | 评论 (0)  编辑

ivy教程(12)-更多例子
     摘要: 如果你已经成功的跟随并理解了所有的教程,可能你还是需要得到更好的关于如何在现实世界中只用ivy的描述。

这里有一些有关系的链接.  阅读全文

posted @ 2009-10-09 21:29 sky ao 阅读(1670) | 评论 (0)  编辑

ivy教程(11)-架设仓库(3)-使用命名空间
     摘要: 现在你已经看到从一个已经存在的仓库创建你自己的仓库是如何的简单,你可能会想知道如何处理更加复杂的情况,例如当源仓库和目的地仓库不遵循相同的命名约定。

当你有一个已经存在的仓库并且希望从大量的不遵循相同的命名转换的公共仓库中获益时,这个问题非常常见。或者仅仅是因为你发现你作为基础使用的仓库不够一直- 为什么所有的apache commons模块不适用org.apache.commons 组织?历史原因。但是如果你安装你自己的仓库,你可能不想从历史中蒙受损失。

幸运的是,对于这种问题ivy有一种非常强大的答复:namespaces.  阅读全文

posted @ 2009-10-09 21:04 sky ao 阅读(1625) | 评论 (0)  编辑

ivy教程(10)-架设仓库(2)-基础仓库复制
     摘要: 在这个步骤中我们使用install任务来从maven2 仓库安装模块到一个基于文件系统的仓库。我们首先安装一个不带依赖的模块,然后安装一个带有依赖的模块。  阅读全文

posted @ 2009-10-04 15:04 sky ao 阅读(2518) | 评论 (1)  编辑

ivy教程(9)-架设仓库(1)-介绍
     摘要: install任务让你从一个仓库复制一个模块或者模块集合到另一个仓库。这对于构建和维护一个企业或者团队仓库非常有用。如果你不想你的团队中的开发人员都访问公共的maven2仓库(例如为了控制哪些模块可以在你的公司或者你的团队中使用),答复开发人员的请求来手工增加新的模块或者新的版本在某些时候变得令人厌烦。

幸运的是install任务可以在这里提供帮助: 你可以为你的用于维护目标企业仓库的仓库维护构建使用特定的设置。这些设置将指向另一个仓库(例如maven2 公共仓库),因此你只需要使用简单的命令行要求ivy安装你需要的模块。

为了演示这个我们将首先使用个一些基本的ivy设置文件来展示它是如何工作的,然后我们将使用高级命名空间特性来演示如何在源仓库和目标仓库之间处理命名不匹配。  阅读全文

posted @ 2009-10-04 13:42 sky ao 阅读(2059) | 评论 (1)  编辑

ivy教程(8)-使用ivy模块配置
     摘要: 这个教程介绍ivy文件中的模块配置的使用。ivy模块配置事实上是一个非常重要的概念。某些人甚至告诉我使用ivy而不用ivy配置就像吃乳酪而不动就在你旁边的Chateau Margaux 1976!

严肃的说,ivy中的配置可以更好的理解为你的模块的视图,你将可以看到在这里他们将如何被高效地使用。  阅读全文

posted @ 2009-10-04 10:15 sky ao 阅读(4895) | 评论 (3)  编辑

ivy教程(7)-在多项目环境下使用ivy
     摘要: 在上一个教程中,你已经看到如何处理两个简单项目之间的依赖。

这个教程将引导你完成在一个更加复杂的环境下的ivy使用。这个教程的所有源文件在ivy发行包的src/example/multi-project下可以得到。  阅读全文

posted @ 2009-10-03 11:48 sky ao 阅读(2730) | 评论 (4)  编辑

ivy教程(6)-项目依赖
     摘要: 这个示例将举例说明在两个项目之间的依赖。

depender项目声明它使用dependee 项目。我们将阐明两个事情:

* 被独立的项目声明的公共类库将被依赖的项目自动获取
* depender项目将获取dependee项目的"最新"版本  阅读全文

posted @ 2009-09-29 23:32 sky ao 阅读(2797) | 评论 (0)  编辑

ivy教程(5)-双重解析器
     摘要: 在一些情况下,会发生这样的事情:你的模块描述符(ivy文件,maven pom, ...)被放置在一个地方,而模块的制品(jars,...)在另外一个地方。

双重解析器用于满足这种类型的需求,而这个教程将展示如何使用它。  阅读全文

posted @ 2009-09-27 20:58 sky ao 阅读(1758) | 评论 (0)  编辑

ivy教程(4)-多解析器
     摘要: 这个例子演示模块是如何被多解析器获得的。使用多解析器在很多情况下是非常有用的,这里是一些例子:

* 来自发行的单独的集成构建
* 为第三方模块使用公共仓库并且为内部模块使用私有仓库
* 使用一个仓库来存储那些在无法管理的公共仓库里里面的不清晰的模块
* 使用本地仓库来暴露在一个开发人员的位置上生成的构建

在ivy中,多解析器的使用是通过一个名为解析器链的复合解析器来支持的。

在我们的例子中,我们将简单的展示如何使用两个解析器,一个在本地仓库而另一个使用maven2仓库。
  阅读全文

posted @ 2009-09-25 15:28 sky ao 阅读(1806) | 评论 (0)  编辑

ivy教程(3)-调整默认设置
     摘要: ivy绑定一些默认设置,这使得在通常环境下使用ivy很容易。这个教程,接近于参考文档,解释这些默认设置是什么和他们怎样调整来满足你的需要。

为了完整的理解设置的概念和你可以用它们做什么,我们建议阅读其他和设置相关的教程(如Multiple Resolvers 和 Dual Resolver)或者设置文件的参考文档。  阅读全文

posted @ 2009-09-24 20:58 sky ao 阅读(4833) | 评论 (0)  编辑

ivy教程(2)-快速开始
     摘要: 在这个例子中,我们将看到使用ivy的一个最简单的方式。不使用任何特殊设置,ivy将使用maven2 仓库来解析你在ivy文件中声明的依赖。让我们来看一眼涉及到的文件的内容。

你将在ivy发行包的src/example/hello-ivy 目录下找到这个教程的源文件。  阅读全文

posted @ 2009-09-22 11:48 sky ao 阅读(5113) | 评论 (3)  编辑

ivy教程(1)-目录
     摘要: 学习的最佳方式是实践!这是ivy教程将帮助你做到的,发现一些伟大的ivy特性。

这里是非常优先的教程,它甚至不需要安装ivy,如果你已经正确安装了ant和jdk,甚至只需要花费不到30秒的时间  阅读全文

posted @ 2009-09-21 23:57 sky ao 阅读(2410) | 评论 (0)  编辑

ivy中文参考文档(21)-ant任务(9)-post resolve tasks
     摘要: 在ivy中有几个任务被认为是后解析任务(post resolve task),并相应地共享公用行为和设置。

这些任务是:

* retrieve
* cachefileset
* cachepath
* artifactproperty (since 2.0)
* artifactreport (since 2.0)  阅读全文

posted @ 2009-09-15 14:17 sky ao 阅读(1386) | 评论 (0)  编辑

ivy中文参考文档(20)-ant任务(8)-cachefileset
     摘要: cachefileset,为配置构建一个有ivy缓存中的制品组成的ant fileset 从1.2版本起)。

这是一个后解析任务,有所有后解析任务共有的所有行为和属性。注意这个任务不依赖retrieve,因为构建的fileset是由ivy缓存中的制品直接构成的。  阅读全文

posted @ 2009-09-03 23:30 sky ao 阅读(1413) | 评论 (1)  编辑

ivy中文参考文档(19)-ant任务(7)-cachepath
     摘要: 为解析过的模块配置构建一个由在ivy 缓存(或者取决于useOrigin 设置的原始位置)中的制品组成的ant path.  阅读全文

posted @ 2009-09-01 21:21 sky ao 阅读(1367) | 评论 (0)  编辑

ivy中文参考文档(18)-ant任务(6)-deliver
     摘要: 交付当前模块的解析好的描述符,而且可能执行依赖的递归交付。

这个任务主要做两个事情:
1. 生成一个解析好的ivy 文件
2. 执行递归交付  阅读全文

posted @ 2009-08-31 22:22 sky ao 阅读(1295) | 评论 (0)  编辑

ivy中文参考文档(17)-ant任务(5)-publish
     摘要: 发行当前模块的制品和已解析的描述符(已交付的ivy文件)。

这个任务的目的是发行当前模块描述符和它的声明的发行制品到仓库中。  阅读全文

posted @ 2009-08-19 07:41 sky ao 阅读(1531) | 评论 (0)  编辑

ivy中文参考文档(16)-ant任务(4)-configure
     摘要: configure任务用于通过xml设置文件来配置ivy。  阅读全文

posted @ 2009-08-04 21:29 sky ao 阅读(1236) | 评论 (0)  编辑

ivy中文参考文档(15)-ant任务(3)-retrieve
     摘要: retrieve任务复制解析好的依赖到你的文件系统的任何位置。

这是一个post resolve任务,带有所有post resolve任务共有的所有的行为和属性。  阅读全文

posted @ 2009-08-03 08:34 sky ao 阅读(2653) | 评论 (0)  编辑

ivy中文参考文档(14)-ant任务(2)-resolve
     摘要: 解析任务实际解析在ivy文件中描述的依赖,并将解析后的依赖放置到ivy缓存中。

如果在resolve任务前没有调用configure任务,则将使用默认的configuration (等同于不带参数的调用configure).  阅读全文

posted @ 2009-08-02 13:18 sky ao 阅读(2288) | 评论 (0)  编辑

ivy中文参考文档(13)-ant任务(1)-buildlist
     摘要: buildlist任务用于获取按照ivy依赖信息从小到大排序的文件(通常是build.xml文件) 列表,或者相反(从1.2之后)

这个任务在结合subant构建相关项目集合时特别有效, 可以确保依赖在其他依赖它的模块之前被构建  阅读全文

posted @ 2009-08-02 09:52 sky ao 阅读(1427) | 评论 (0)  编辑

[转帖]Handling native dependencies with Apache Ivy
     摘要: 转一个blog,关于如何使用ivy来处理native的依赖,对于有使用JNI开发的朋友应该很有价值。

原文blog地址:http://www.cooljeff.co.uk/2009/08/01/handling-native-dependencies-with-apache-ivy/  阅读全文

posted @ 2009-08-02 07:47 sky ao 阅读(1432) | 评论 (0)  编辑

ivy中文参考文档(12)-单独使用
     摘要: ivy可以非常容易的作为一个单独的程序使用。你所需要的只是一个java1.4+的运行环境(JRE)!  阅读全文

posted @ 2009-07-23 13:36 sky ao 阅读(1581) | 评论 (1)  编辑

ivy中文参考文档(11)-ant任务
     摘要: 使用ivy的主要和最频繁的方式是在ant构建文件中。不过,ivy也可以作为独立的应用被调用。  阅读全文

posted @ 2009-07-23 08:21 sky ao 阅读(2180) | 评论 (0)  编辑

ivy中文参考文档(10)-ivy文件
     摘要: ivy的使用完全是基于以"ivy文件"著称的模块描述符。ivy文件是xml文件,通常被称为ivy.xml,包含模块依赖的描述,它发布的制品和它的配置。  阅读全文

posted @ 2009-07-22 22:21 sky ao 阅读(1627) | 评论 (1)  编辑

ivy中文参考文档(9)-设置文件
     摘要: 为了如您所想的工作,ivy有时需要一些设置。实际上,ivy可以在完全没有任何特殊设置的情况下工作,查阅默认设置文档来获取相关的更详尽的信息。但是ivy有能力在完全不同的上下文下工作。你只需要正确的配置它。  阅读全文

posted @ 2009-07-22 21:26 sky ao 阅读(1462) | 评论 (1)  编辑

ivy中文参考文档(8)-安装
     摘要: 安装ivy主要有两种方式,手工安装或者自动安装。  阅读全文

posted @ 2009-07-18 20:28 sky ao 阅读(1815) | 评论 (0)  编辑

ivy中文参考文档(7)-最佳实践(下)
     摘要: 这里有一些我们从我们的经验和一些客户的顾问工作中收集到的建议和最佳实践。

5) 处理集成版本
6) 是否将依赖内联(inlining)
7) 雇用专家  阅读全文

posted @ 2009-07-18 19:55 sky ao 阅读(1034) | 评论 (0)  编辑

ivy中文参考文档(6)-最佳实践(上)
     摘要: 这里有一些我们从我们的经验和一些客户的顾问工作中收集到的建议和最佳实践。

1) 为所有的模块添加模块描述符
2) 使用自己的企业仓库
3) 至少在组织和模块上使用模式
4) 为公共仓库发布ivysettings.xml  阅读全文

posted @ 2009-07-11 10:43 sky ao 阅读(1317) | 评论 (0)  编辑

ivy中文参考文档(5)-ivy如何工作
     摘要: 前面已经介绍了ivy主要的术语和概念,现在是时候说明ivy如何工作的了。  阅读全文

posted @ 2009-07-08 23:37 sky ao 阅读(1685) | 评论 (0)  编辑

ivy中文参考文档(1)-目录
     摘要: 在学习ivy的过程中陆陆续续的翻译了一些ivy的参考文档,现在准备将这个工作进行到底,将官方网站上完整的ivy参考文档翻译成中文。上面内容是参考文档的目录,翻译完成的部分我会陆续更新为中文并加入链接。

英文文档地址请见:http://ant.apache.org/ivy/history/latest-milestone/reference.html

水平有限,出现错误的地址请多多指正。  阅读全文

posted @ 2009-07-08 08:59 sky ao 阅读(1464) | 评论 (0)  编辑

ivy中文参考文档(4)-主要概念(下)
     摘要: ivy中引入了一些自己的概念,了解并理会这些概念对ivy的学习使用是有帮助的。这里翻译一下官网的介绍ivy主要概念的文章,原文在此:http://ant.apache.org/ivy/history/2.1.0-rc1/concept.html

因内容太长而拆分,下面是第二部分。  阅读全文

posted @ 2009-07-06 08:28 sky ao 阅读(1711) | 评论 (2)  编辑

ivy中文参考文档(3)-主要概念(上)
     摘要: ivy中引入了一些自己的概念,了解并理会这些概念对ivy的学习使用是有帮助的。这里翻译一下官网的介绍ivy主要概念的文章,原文在此:http://ant.apache.org/ivy/history/2.1.0-rc1/concept.html

因内容太长而拆分,下面是第一部分  阅读全文

posted @ 2009-05-31 22:23 sky ao 阅读(1715) | 评论 (0)  编辑

ivy中文参考文档(2)-术语
     摘要: ivy中有一套自己特定的术语,了解并熟悉他们对ivy的使用非常重要,尤其对于ivy新手。  阅读全文

posted @ 2009-05-25 13:09 sky ao 阅读(2484) | 评论 (5)  编辑

ivy 2.1.0-rc1发布

posted @ 2009-04-08 17:42 sky ao 阅读(1197) | 评论 (0)  编辑

初学Ivy(1)-安装配置
     摘要: maven很强大,但是远不完美,令人烦恼的地方也不少。看到Ivy似乎日渐成熟,试试看这个小东西表现如何,毕竟后面有那个强大的我喜欢的ant。

折腾了一番,整理出来点东西,分享给对ivy同样感兴趣的朋友。依然是"初学"系列,提供给新手入门使用。  阅读全文

posted @ 2009-03-31 00:01 sky ao 阅读(8723) | 评论 (3)  编辑

m2eclipse 0.9.7安装问题
     摘要: 从http://m2eclipse.sonatype.org/update下在线安装m2eclipse,现在的版本是0.9.7,20090209的版本,应该是新出来的。安装时出现错误提示导致无法安装:

Cannot complete the request. See the details.
Cannot find a solution satisfying the following requirements org.eclipse.ui.workbench [3.4.2.M20090127-1700].  阅读全文

posted @ 2009-03-18 06:40 sky ao 阅读(2886) | 评论 (8)  编辑

解决m2eclipse 0.9.7版本下maven Assembly plugin无法工作的问题
     摘要: 升级到m2eclipse 0.9.7版本后,发现一个问题,maven Assembly plugin无法工作,具体是在eclipse下执行"run as" --> "maven package"时,报错:

[INFO] Failed to create assembly: Error adding file 'net.runafter.nptt:NpttCore:jar:0.1.0' to archive:
G:\workspace\private\tools\nptt\trunk\NpttCore\target\classes isn't a file.

可以看到,maven Assembly plugin试图以操作文件的方式操作目录NpttCore\target\classes,因此失败造成整个package命令执行失败。  阅读全文

posted @ 2009-03-17 21:41 sky ao 阅读(4367) | 评论 (0)  编辑

初学maven(5)-使用assembly plugin实现自定义打包
     摘要: 在上一篇文章中,讨论到在对maven的机制不熟悉的情况下,为了实现自己需要的打包格式而使用maven ant task以maven + ant的方式来实现非标准打包,而现在要介绍的是maven中针对打包任务而提供的标准插件:assembly plugin。  阅读全文

posted @ 2009-01-16 18:22 sky ao 阅读(49262) | 评论 (1)  编辑

初学maven(4)-使用maven ant task实现非标准打包
     摘要: maven很强大,但是总有些事情干起来不是得心应手,没有使用ant时那种想怎么干就怎么干的流畅感。尤其当要打包一个特殊(相对maven的标准架构而且)时,常有不知所措的感觉。当然这个应该和自己对maven的了解不够有关,毕竟,“初学maven”嘛。

但是maven在依赖管理方面实在是太强大了,太喜欢,退回原来的ant方式完全不可能,我想用过maven的人,一般是不会有回到原来在 cvs,subversion中checkin/checkout n个jar包的时代,仅此一项理由就足够继续坚持使用maven了。

然而ant的灵活又难于忘怀,尤其是从ant的build.xml一路走来的人,总是回不知不觉间想到ant的美好。鱼与熊掌,我都想要。  阅读全文

posted @ 2008-12-29 16:37 sky ao 阅读(9060) | 评论 (1)  编辑

初学maven(3)-使用nexus替代artifactory作为maven私服
     摘要: 之前看到过一些Nexus的介绍,由于刚开始接触maven时使用的私服是artifactory,因此没有太在意。今天想着既然Nexus能有胆量出来混,应该有点真本事才是,看了一下nexus的安装介绍,挺简单的,试试无妨。因此装上小试了一下,结果喜出望外,nexus的表现非常不错,尤其是在开启远程索引之后,简直太方便了。

于是决定放弃artifactory改而使用nexus作为自己的maven私服。恩,惭愧,颇有点喜新厌旧的味道,artifactory才装上来没有几天,就惨遭抛弃......  阅读全文

posted @ 2008-09-06 23:16 sky ao 阅读(10279) | 评论 (10)  编辑

初学maven(2)-maven/artifactory/m2eclipse安装全过程
     摘要: 前段时间研究过一下maven,中途因为工作忙搁置了一段时间,重新再看时发现安装过程基本忘光。只好找资料看然后再来一遍,将 maven,artifactory和m2eclipse安装使用的全过程记录整理出来,备忘。另外我想这些资料应该比较适合maven的入门新手,照做一遍就可以完成三个东西的安装设置,然后就可以学习和使用了。  阅读全文

posted @ 2008-08-28 22:30 sky ao 阅读(6224) | 评论 (2)  编辑

初学maven(1)-常见小问题集锦
     摘要: 初学maven,遇到不少问题,记录下来,呵呵,依然是备忘兼共享。  阅读全文

posted @ 2008-06-18 17:09 sky ao 阅读(1661) | 评论 (4)  编辑