Grails 1.3的依赖管理

本文介绍如何使用Grails进行包管理,包括配置私有Maven服务器、发布插件及解决依赖问题。通过定制化的包管理流程,实现类似Maven的便捷管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用Grails做项目以来,基本上一直都是各自独立的项目,也很少使用CI(持续集成)来进行管理,因此对Grails的包管理也没有什么迫切的需求,也就没有考虑包的复用性问题,其实从Grails1.2开始,好像就有包的管理了,在1.3中更加强了,此外还可以跟maven进行集成(Grails默认是使用IVY进行管理的),实在是方便的很。现在就我所实践的一些包管理简要说说。

先说明一下我的工程情况,系统有一个主web app工程,姑且叫做app1吧,其他的都是插件,比如plug1,plug2等,现在我希望整个工程像maven那样进行管理。好了,既然grails支持maven插件和发布(mavne-publisher插件,由Grails领导人创造),让我们开始吧。

把插件发布到我自己的mavne服务器上,这个基本上就是做些配置就好了,比如在BuildConfig中增加
grails.plugin.repos.distribution.myRepository="http://xxx.com/maven2"
grails.project.dependency.distribution = {
remoteRepository(id:"kindsoftRepo", url:"ftp://host/mavenrepository/") {
authentication username:"user", password:"password"
}
}

其中dependency.distribution最好放在$HOME/.grails/setting.groovy中,这样安全相对好点。安装了maven-publisher以后,执行
grails maven-deploy --repository=kindsoftRepo

至此,把插件发布到maven服务器已经OK了。

那么在app1的工程中如何解决对plug1的依赖呢,这个Grails是通过grails.project.dependency.resolution来解决的,默认的app1将会在
        grailsPlugins()
grailsHome()
grailsCentral()
mavenCentral()
进行插件搜索,如果找到就会自动按照所依赖的插件。那么发布到私有maven服务器的将如何加入了,在我的项目中,我是没法通过自定义grailsRepo,mavenRepo来解决这个问题,还好Grails还提供了Custom Resolver的方式,我的示例代码:
		def libResolver = new org.apache.ivy.plugins.resolver.URLResolver(m2compatible:true)
libResolver.addArtifactPattern("http://xxx.com/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]")
libResolver.name = "kindsoft-repository"
libResolver.settings = ivySettings
resolver libResolver

以上代码要放在grails.project.dependency.resolution.repositories中,然后,你就可以在grails.project.dependency.resolution.plugins中声明你自己需要的插件了。

哈哈,一切顺利。如果还有疑问,可以参考[url=http://grails.org/doc/latest/guide/3.%20Configuration.html#3.7%20Dependency%20Resolution]3.7 Dependency Resolution[/url]

此外我已经成功使用Hudson对Grails进行持续集成,可以参考我转载的文章:[url=http://agile-boy.iteye.com/blog/704903][转载]Grails plugins on Hudson[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值