On Saturday, November 10, 2018 at 9:47:13 AM UTC-4, T L wrote:
>
> After adding the require line and run "go mod tidy", the program compiles 
> successfully.
> Thanks for your help!
>
> But I still have some confusions.
> 1. Why does "go build" still connect to go101.org even if the wording "
> go101.org" doesn't appear in any source code and go.mod files?
> 2. "Why doesn't "go build" run "go mod tidy" automatically?
> 3. Now, each "go build" run will stil connect to go101.org firstly, even 
> of the replace line is there.
>     Even if the connection fails, the build will still succeed. Then what 
> the meaningless to connect to
>     the old import paths which have been replaced.
>

4. Why can't treat a replace line as require line automatically?
 

>
> On Saturday, November 10, 2018 at 7:57:00 AM UTC-4, Paul Jolly wrote:
>>
>> > But the go101.org is not intended to serve any code repository. 
>> > This is why I use the replace line in go.mod. 
>>
>> If go101.org will never resolve the custom import path (giving meta 
>> information, as indicated at 
>> https://golang.org/cmd/go/#hdr-Remote_import_paths), then why make 
>> this the module path? Because anyone who uses the import path will 
>> always have to add a replace. Why not make the module path 
>> github.com/... in the first place? The replace directive is an 
>> extremely inefficient alternative to custom import meta information. 
>>
>> > So my package import path must be locked as "github.com/...." if 
>> go101.org doesn't provide the repository meta? 
>> > If this is true, I feel the go 1.11 module feature is not much useful. 
>>
>> Your example was almost there; you need a require statement, else when 
>> the go tool encounters the go101.org/tinrouter import path it will try 
>> to resolve that via custom import path resolution: 
>>
>> $ go version 
>> go version go1.11.2 linux/amd64 
>> $ cd $(mktemp -d) 
>> $ go mod init blah 
>> go: creating new go.mod: module blah 
>> $ cat <<EOD >main.go 
>> package main 
>>
>> import ( 
>>     _ "go101.org/tinyrouter" 
>> ) 
>>
>> func main() { 
>> } 
>> EOD 
>> $ go mod edit -require=go101.org/tinyrouter@v1.0.0 
>> -replace=go101.org/tinyrouter=github.com/go101/tinyrouter@v1.0.0 
>> <http://go101.org/tinyrouter@v1.0.0-replace=go101.org/tinyrouter=github.com/go101/tinyrouter@v1.0.0>
>>  
>> $ cat go.mod 
>> module blah 
>>
>> require go101.org/tinyrouter v1.0.0 
>>
>> replace go101.org/tinyrouter => github.com/go101/tinyrouter v1.0.0 
>> $ go mod tidy 
>> go: finding github.com/go101/tinyrouter v1.0.0 
>> go: finding github.com/gorilla/mux v1.6.2 
>> go: finding github.com/julienschmidt/httprouter 
>> v0.0.0-20180715161854-348b672cd90d 
>> ... 
>> $ cat go.mod 
>> module blah 
>>
>> require ( 
>>         github.com/davecgh/go-spew v1.1.1 // indirect 
>>         github.com/dimfeld/httptreemux v5.0.1+incompatible // indirect 
>>         github.com/gorilla/context v1.1.1 // indirect 
>>         github.com/pmezard/go-difflib v1.0.0 // indirect 
>>         github.com/stretchr/testify v1.2.2 // indirect 
>>         go101.org/tinyrouter v1.0.0 
>> ) 
>>
>> replace go101.org/tinyrouter => github.com/go101/tinyrouter v1.0.0 
>> $ go build 
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to