使用Artifactory管理Grails1.3的插件

长久以来,管理Grails中的依赖关系仅仅是将相互依赖的jar放到Grails应用的lib目录中。但是在Grails1.2之后出现的依赖DSL可以允许开发者声明依赖关系,并且Grials可以自动的下载依赖并使这些依赖为你的应用服务。Grails1.3之后,已经可以将依赖DSL应用到插件领域。Peter Ledbrook在博文中,介绍如何使用Artifactory管理你的插件。

关于插件总是会面临两个问题:

  • 建立一个合适的Subversion服务器作为Grails插件的存储库,并不是件容易的事情。如果使用Nexus或者Artifactory来进行管理是不是更好些?
  • 无法控制插件给你的应用程序带来的依赖关系。有的插件包含的lib可能并不是必须的,这些lib甚至会影响这个应用的运行。使用以来DSL就能有效地排除这些无关的lib。

如下是Peter Ledbrook以Artifactory为例,介绍管理插件的步骤:

  • 这里下载Artifactory,安装;
  • 登陆Artifatory页面(URL:http://localhost:8081/artifactory,用户名:admin,密码:password),在Deploy页面,将合适的jar文件上传;
  • 为上传的jar文件选择Target Repository;
  • 在Grails中配置存储库和依赖关系:修改grails-app/conf/BuildConfig.groovy文件,示例代码如下:
  • grails.project.dependency.resolution = {
        ...
        log "warn"
        repositories {
            grailsPlugins()
            grailsHome()
            mavenRepo "http://localhost:8081/artifactory/libs-releases-local/"
            mavenRepo "http://localhost:8081/artifactory/plugins-releases-local/"
            grailsCentral()
        }
        plugins {
            build "org.grails.plugins:db-util:0.4"
        }
        dependencies {
            compile "commons-digester:commons-digester:2.0"
        }
    }
    

    上述代码中,在repositories部分为每一个存储库添加一个mavenRepo条目。新增的DSL就是plugins和dependencies部分的内容。关于DSL的语法,请参见本站的Grails 1.2参考文档速读(4)

  • 运行grails run-app,就能够看到关于依赖和插件的相关信息输出,如果不需要输出相关信息,可以将上一步代码中log "warn"删除。

采用Peter Ledbrook的方法,对依赖以及插件的管理就清晰容易了许多。另外,还可以通过Maven Publisher插件将你开发的插件程序发布到MAVEN兼容的存储库中,步骤如下:

  • 在插件工程的BuildConfig.groovy中添加如下代码:
  • grails.project.dependency.distribution = {
        remoteRepository(id: "pluginSnapshots", url: "http://localhost:8081/artifactory/plugins-snapshots-local/") {
            authentication username: "admin", password: "password"
        }
    }
    
  • 运行:grails maven-deploy --repository=pluginSnapshots

关于本文更多详细内容,请参见原文

By huwh - Posted on 26 五月 2010