日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gsmake —— golang版gradle

發布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gsmake —— golang版gradle 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是gsmake

gsmake是一個類似于gradle的自動構建工具,使用go語言開發:

  • gsmake是一個包管理/下載工具;
  • 每個包有它全局唯一的包名,以及版本號;
  • 包可以定義一系列的任務(task),任務支持由golang語言編寫;
  • 包可以相互引用,但是不能出現引用環;
  • gsmake能夠容易的執行包定義的任務;
  • 通過上面描述不難看出,gsmake不僅僅可以用替代make管理golang代碼。通過編寫一系列插件 支持c/c++工程管理也是可行的,甚至你用它來編寫一本《gsmake入門》的書也是有可能的這個 例子在介紹maven/gradle的時候經常提到,總之一句話你可以把它想象成maven/gradle的golang 實現版。

    為啥重新發明輪子

  • 程序員通病,自己的輪子還是要更圓些;
  • 我們的大golang自己的包管理工具,不支持版本化;有一些三方的庫例如:gopm 試圖解決這個問題,但是我覺得解決得還不夠好;
  • 基于jvm的maven/gradle太重量級了,一個jvm就要200M;
  • 去中心化——maven/gradle需要中心倉庫——gsmake不需要, 理論上可以將包托管在任何代碼托管網站;現階段支持下列常用網站:github/bitbucket/gopkg.in
  • gsmake是怎么工作的?

    gsmake一般工作流程如下:

    由于golang是一個編譯型語言所以需要一個編譯的過程,將上一步生成的task調用粘合劑代碼與用戶 定義的task代碼一起編譯為一個程序,然后運行之;

    task

    task具有以下屬性

  • task名稱全局有效;
  • task之間可以有由來關系,但是不能出現環;
  • 不同包定義的task可以有相同的名稱,以及不同的前置依賴task;
  • gsmake將不同包但相同名稱的task任務看做同一個task的多個執行體;
  • gsmake接收一個task名稱并執行它——在內部gsmake需要一個任務排序的過程。被依賴的task需要先執行:

    通過上面的描述我們知道,用戶定義的task組成了一個有向無環圖,我們知道對于這種數據結構的排序其實就是一個簡單的拓撲排序的過程,gsmake的這部分實現在這里

    安裝

    golang的開發環境是必備的,這里就不累述了:

  • go get github.com/gsmake/gsmake/cmd/gsmake,這一步將安裝一個臨時的gsmake可執行 文件到${GOPATH}/bin目錄下,不要忘記添加該路徑到系統PATH
  • 進入${GOPATH}/src/github.com/gsmake/gsmake,執行./gsmake setup ${安裝目錄}
  • 進入比較長的等待——通過gsmake再一次編譯gsmake本身,并通過setup任務安裝gsmake, 這是一個自舉的過程。自此我們就可以丟開gopath,以及golang的版本陷阱愉快的玩耍了。
  • 一個簡單的示例

    看gsmake項目本身吧,它會自己管理自己:)猛戳這里!!!!! PS:請忽略我的英文readme.md,你懂得:)

    轉載于:https://www.cnblogs.com/yayanyang/p/4501132.html

    總結

    以上是生活随笔為你收集整理的gsmake —— golang版gradle的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。