用gvm管理Go項目的workspace

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

我們需要獨立的workspace

在我們進行一個項目的開發時,總是希望一個項目獨立使用一個workspace,用於隔離各個項目的依賴環境。以ruby項目為例,如果公用workspace,會導致gemset公用,可能在多項目開發的時候,難以隔離各個項目不同的gem,在開發以及運行時出現預料外的問題,所以一般的ruby項目,都會在項目根目錄下,使用.ruby-version以及.ruby-gemset來規定當前項目的ruby版本以及gemset,配合rvm或rbenv等版本工具,使ruby項目能使用獨立的workspace。

那麼,Go語言的項目,能不能這麼做呢?

Go的項目隔離

比照ruby語言,Go語言在使用中也面臨了2個問題:

1.語言版本進步很快,需要對應項目進行語言版本管理。2.第三方庫的版本隔離

要解決問題1,我們需要一個工具來安裝多個Go版本,並提供方便的切換功能。

而對於問題2,我們知道Go使用GOPATH這個環境變數來管理編譯時間的原始碼路徑,所以第三方庫也是下載在GOPATH下,並且我們的原始碼也需要處於GOPATH下。於是就需要一個工具,能根據方便的設定GOPATH。

在網上搜尋後,發現了 gvm 這個好用的工具。這個以shell指令碼開發的工具,同時相容bash和zsh,用法和ruby的rvm很像,能做到Go語言版本的切換以及GOPATH的修改。

通過gvm管理workspace

安裝gvm

github地址:https://github.com/moovweb/gvm

bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)  

如果用的是zsh,將 bash 替換為 zsh。

安裝Go

這裡我們用Go 1.4.2版本為例,運行下面的命令:

gvm install go1.4.2  

需要使用這個版本,執行gvm use go1.4.2,如果需要將這個版本作為預設版本,我們可以執行gvm use go1.4.2 --default

建立項目的workspace

我們來建立一個項目,名字叫baozou。項目目錄放在~/goproj/下。

mkdir -p ~/goproj/baozou  cd ~/goproj/baozou  gvm pkgset create --local  gvm pkgset use --local  mkdir src  

在上面的命令中,我們建立了baozou項目的目錄,進入目錄後,使用gvm pkgset create -local命令,將目錄設為一個local的pkgset,然後通過gvm pkgset use --local來使用它,這時,當前的環境變數的GOPATH為:

$HOME/goproj/baozou:$HOME/goproj/baozou/.gvm_local/pkgsets/system/local:$HOME/.gvm/pkgsets/system/global

可以看到,GOPATH已經被設定為baozou這個項目目錄了,這時我們執行go get命令來下載第三方庫的時候,會預設下載到$HOME/goproj/baozou/src目錄下。

接下來,我們來建立真正用於代碼管理的目錄:

mkdir -p ~/goproj/baozou/src/baozou  cd ~/goproj/baozou/src/baozou  git init  

這裡,我們用git來管理項目的軟體版本。現在,我們可以在~/goproj/baozou/src/baozou這個目錄下來編寫代碼了。

總結

通過使用gvm,我們能夠根據項目切換Go語言版本以及切換GOPATH目錄。這2大功能,協助我們給每一個Go項目提供獨立的workspace,互相不干擾。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.