用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中声明你自己需要的插件了。
哈哈,一切顺利。如果还有疑问,可以参考
3.7 Dependency Resolution
此外我已经成功使用Hudson对Grails进行持续集成,可以参考我转载的文章:
[转载]Grails plugins on Hudson
分享到:
相关推荐
- 如何在Grails应用中引用和管理参考数据。 #### 七、控制应用流 **7.1 控制器的本质** - **为Hubbub实现timeline**:创建一个展示用户活动的时间线。 - **添加新的邮件**:实现向时间线中添加新记录的功能。 - *...
1.3 java的力量 1.4 什么是grails 1.4.1 与java集成 1.4.2 简单而强大 1.4.3 吸取的经验教训 1.5 使用grails的原因 1.6 grails入门 1.6.1 运行grails命令 1.6.2 义不容辞...
- **参与注入**:介绍了一种特殊的依赖注入方式,用于处理命令对象中的依赖关系。 **7.5 运用图像** - **处理文件上传**:讲解了如何处理用户上传的图片文件。 - **上传到文件系统**:介绍了如何将文件保存到文件...
1.3 Grails的诞生解决了一些遗憾 3 1.3.1 Groovy语言 3 1.3.2 Grails站在了巨人的肩膀之上 3 1.3.3 Grails有良好的扩展性 3 1.4 对Grails的一些误解 3 1.5 本书的使用说明 4 1.6 本章小结 4 第一篇 入门篇 第2章 ...
一环-脚本规则引擎服务 一个环与其他“规则引擎”不同,它被用作多个应用程序的Web服务,以访问...该项目自2012年以来未进行更新,并依赖于grails1.3.x。 我们正在寻找一种升级途径,它将其转变为在Micronaut( )上运
1.3 小结 18 第2章 开发第一个应用程序 19 2.1 运用Spring Boot 19 2.1.1 查看初始化的Spring Boot新项目 21 2.1.2 Spring Boot项目构建过程解析 24 2.2 使用起步依赖 27 2.2.1 指定基于功能的...
1.3 小结 18 第2章 开发第一个应用程序 19 2.1 运用Spring Boot 19 2.1.1 查看初始化的Spring Boot新项目 21 2.1.2 Spring Boot项目构建过程解析 24 2.2 使用起步依赖 27 2.2.1 指定基于功能的依赖 28...
9. **Grails Integration**: 虽然未明确提及,但Groovy常用于构建Grails框架的应用,这是一个基于Groovy的现代Web应用框架。 10. **Testing and Debugging Tools**: 包括JUnit和Spock测试框架的支持,以及各种调试...
1.3 小结 ......................................................... 18 第 2 章 开发第一个应用程序 .................... 19 2.1 运用 Spring Boot ..................................... 19 2.1.1 查看初始化...
1.3 小结 ......................................................... 18 第 2 章 开发第一个应用程序 .................... 19 2.1 运用 Spring Boot ..................................... 19 2.1.1 查看初始化...
1.3 调用构造程序创建Bean 14 1.3.1 问题 14 1.3.2 解决方案 14 1.3.3 工作原理 14 1.4 解决构造程序歧义 17 1.4.1 问题 17 1.4.2 解决方案 17 1.4.3 工作原理 17 1.5 指定Bean引用 20 1.5.1 ...
1.3 调用构造程序创建Bean 14 1.3.1 问题 14 1.3.2 解决方案 14 1.3.3 工作原理 14 1.4 解决构造程序歧义 17 1.4.1 问题 17 1.4.2 解决方案 17 1.4.3 工作原理 17 1.5 指定Bean引用 20 1.5.1 ...