• 2011-05-03

    实用buildr

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/dreamhead-logs/125106662.html

    为什么选择Buildr
    选择,构建工具

    Buildr基础
    搭建Scala工程
    搭建Scala工程——测试

    多模块工程
    虽然是一个项目,但把代码放到不同的模块里做物理隔离,本身是有助于更好的思考解耦。下面就是一个web项目的buildfile,其中包含了两个部分:domain和web。

    define 'killer' do
      project.version = '0.0.1'
      define 'domain' do
        package :jar
      end  

      define 'web' do
        DOMAIN_PROJECT = project('killer:domain')
        DOMAIN = DOMAIN_PROJECT.packages
        compile.with DOMAIN
        package(:war).with(:libs=>DOMAIN)
      end
    end

    这样,web模块里就可以引用到domain模块定义的内容,而且在打包的时候,会给domain模块生成的的jar包,打到自己的war包里。

    stub依赖

    在测试里,我们可能会编写一些stub,减少对外界资源的依赖。在划分成多工程的项目里,web模块可能会引用到domain模块定义的一些stub,我们可以在web模块的定义里这样写:

      test.with DOMAIN_PROJECT.test.compile.target

    这种做法实际上是直接依赖到DOMAIN生成的class文件。

    不同环境的配置

    开发、测试和生产等不同的环境可能会有不同的配置。我们可以在buildfile相同的目录下放置一个profiles.yaml。下面是一个配置示例:

    development:
      db:
        adpater: mysql
        url: jdbc:mysql://localhost/homeideas_development
        driver: com.mysql.jdbc.Driver
        username: root
        password: 
        jar: mysql:mysql-connector-java:jar:5.1.14

    在buildfile里,我们可以这样引用这个配置:
      db_settings = Buildr.settings.profile['db']
      db_adapter = db_settings['adapter']

    分享到:
    引用地址: