Albacore–.NET下基於Rake(ruby make)的自動化構建工具

來源:互聯網
上載者:User
文章目錄
  • 1.1 安裝Ruby
  • 1.2 安裝Rake和Albacore
  • 4.1,Rakefile
  • 4.2,Albacore提供的其他功能

微軟系的工具以整合化著稱,自動化構建一般也是基於Visual Studio或者它的外掛程式。除此之外可能就是NAnt——Java中Ant的.NET版,很多開源的項目就是用NAnt來實現自動化構建的。我個人最不喜歡Ant的是他是基於XML的,我現在對XML有著本能的反感,他不符合DRY。XML中重複又沒有意義的標籤太多了,前幾年對XML的替代可能是YAML,但是近幾年隨著Web開發的普及,JSON成了替代XML的不二選擇,很多語言的標準庫都有JSON的parser,這進一步推動了JSON這種資料交換格式的普及。

Albacore是基於Ruby Rake的自動化構建工具,它文法和Rake儲存一致,直接使用Visual Studio的solution,project檔案,上手很簡單。

1,環境的安裝1.1 安裝Ruby

Albacore是基於Ruby Rake的,所以先要安裝Ruby,我是用Cygwin的,所以可以直接安裝。如果是在Windows下安裝Ruby,記得要把Ruby加到PATH中。這個網上有很多Ruby安裝的教程。

1.2 安裝Rake和Albacore

Rake是Ruby下的構建工具,可以使用gem來安裝:

$gem install rake

Albacore也是Ruby下的一個包,同樣可以使用gem來安裝:

$gem install albacore

2,一個簡單的樣本

假如我們有這樣的目錄結構:

我們現在在項目的根目錄(跟solution同目錄)建立一個Rakefile(這個Rakefile類型與Makefile或Ant中的build.xml,是自動化構建的指令碼),Rakefile內容是:

require 'albacore'task :default => [:build]msbuild :build do |msb|  msb.solution = "BuyLottery.sln"  msb.targets :clean, :build  msb.properties :configuration => :releaseend

建立完成後我們就可以用直接在該目錄下用rake命令在該目錄下構建項目了。

3,討論

Ruby的元編程真的很牛逼,看Rakefile的編寫就知道了。Albacore直接利用了Visual Studio內建的MSBuild和項目定義檔案,這不僅較少了麻煩,還減少了重複,Rakefile的功能集中與構建任務本身,而繁瑣的任務還留在Visual Studio的專案檔中。

這裡不得不提一下Rake,Rakefile中可以直接用Ruby指令碼寫你想完成的任務,比如建立目錄,移動檔案,等等。你所要用到的只是Ruby語言和其標準庫。

Ruby在這裡更像是一個平台,無論是gem, rake, albocore其實都是Ruby指令碼而已。

4,Rakefile文法和Albacore提供的功能4.1,Rakefile

Rakefile的文法是源於Makefile,他主要有任務(task)和依賴(=>)組成。

task :default => [:test]task :test do  ruby "test/unittest.rb"end

上面的Rakefile有兩個task,一個是default,如果你直接rake而不加task的名字,default task會被調用。第二個是test,在do…end直接你可以用Ruby完成任何你想完成的構建任務。對於default這個task而言他用=>指出的他的依賴項,依賴項是一個Ruby數組,這個數組列出了這個task的所有依賴項(其實也是個task)。

更詳盡的Rakefile定義參見Rakefile Format。

4.2,Albacore提供的其他功能

Albacore自訂了一些內建任務,比如我們樣本中用到的msbuild,msbuild的目標是簡化我們建立Rakefile task。樣本中我們只要指定sln檔案就可以構建一個項目了。其他的任務還包括:

assemblyinfo    --版本號碼管理,其實就是操作AssemblyInfo.cs檔案。nunit           --NUnit測試ncoverconsole   --zip             --壓縮打包

還有一些其他內建任務請參考Albacore的GitHub上的代碼和樣本。

5,參考

http://albacorebuild.net/

https://github.com/Albacore/albacore

https://github.com/Albacore/albacore/wiki/Getting-Started

http://code-magazine.com/article.aspx?quickid=1006101&page=1

http://rake.rubyforge.org/doc/rakefile_rdoc.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.