亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

高浪。替換不是實際 go 包的包的模塊路徑

高浪。替換不是實際 go 包的包的模塊路徑

Go
繁星coding 2022-10-04 19:51:08
有這個軟件包 https://github.com/open-telemetry/opentelemetry-proto 它只包含原型定義。要生成戈蘭代碼,必須鍵入:make gen-go并轉到生成失敗,并顯示以下消息:build opentel: cannot load github.com/open-telemetry/opentelemetry-proto/gen/go/common/v1: module github.com/open-telemetry/opentelemetry-proto@latest found (v0.11.0), but does not contain package github.com/open-telemetry/opentelemetry-proto/gen/go/common/v我試圖在go.mod文件中用另一個路徑替換一個路徑,但顯然我不太擅長它。我怎樣才能使它工作?我已將這些生成的文件復制到$GOPATH/src/opentelemetry-proto/gen/go我應該在主包裹的進口聲明中放入什么?
查看完整描述

1 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

Go源的生成方式存在一些挑戰。我假設存儲庫作者的目標是跨語言的一致性,以及Go的用例。所以,是的,對他們和我們來說都是可怕的。GOPATHGO MODULES


這是一個 (!?) 解決方案:


假設您處于其中,并且它包含同一級別的“my-模塊”的克隆,即:/path/to/somediropentelemetry-proto


.

├── my-module

└── opentelemetry-proto

make gen-go如故。這應該創建./opentelemetry-proto/gen


開始 :./opentelemetry-proto/gen/go/github.com/open-telemetry/opentelemetry-protogo mod init github.com/open-telemetry/opentelemetry-proto


.

├── gen

└── go.mod

從 內部,然后:my-modulego mod init my-module

go.mod:


module my-module


go 1.17


require (

    github.com/open-telemetry/opentelemetry-proto v0.11.0

)


replace (

    github.com/open-telemetry/opentelemetry-proto => ../opentelemetry-proto/gen/go/github.com/open-telemetry/opentelemetry-proto

注意使用向下到包的路徑是必需的(它們不使用Go模塊),因此,如果我們使用,我們可以GOPATHGOPATHGOPATH=${GOPATH}:${PROTO_GEN_GO_DIR}/github.com/open-telemetry/opentelemetry-proto


然后,例如


main.go:


package main


import (

    v1 "github.com/open-telemetry/opentelemetry-proto/gen/go/collector/metrics/v1"

)


func main() {

    // E.g.

    _ = v1.ExportMetricsServiceRequest{}

}


解釋:


make gen-go不會創建模塊,但我們可以創建一個模塊。


模塊從路徑中隱式,即gen/gogithub.com/open-telemetry/opentelemetry-proto


然后,從我們的項目中,我們可以提供一條本地路徑。該路徑是克隆的路徑,然后返回到我們新創建的 。replacego.mod


導入路徑是從模塊(即過度復雜的替換路徑)到我們感興趣的任何包的路徑。


注意通常原始進口是pb,但我使用過。v1


我會怎么做:


我認為生成的代碼的模塊應該與其存儲庫匹配。如果我的,我會將源代碼生成到存儲庫根中,而無需opentelemetry-protogen/go


正如這將 - IMO - 簡化一切以:


github.com/open-telemetry/opentelemetry-proto => ../opentelemetry-proto

和:


import (

    v1 "github.com/open-telemetry/opentelemetry-proto/collector/metrics/v1"

)


查看完整回答
反對 回復 2022-10-04
  • 1 回答
  • 0 關注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號