title: How to build project whose dependencies depend on another version of a project dependency
body: <p>Imagine you have a project which requires two modules <code>A</code> and <code>B</code>. I will call the project module <code>P</code>. Let's say that <code>P</code> requires <code>A v1.0.0</code>, <code>B v1.1.0</code> and that <code>A</code> requires <code>B v1.0.0</code>. Furthermore <code>B</code> did not adhered  semantic versioning rules thus the version change from <code>v1.0.0 -&gt; v1.1.0</code> introduced a breaking API change. So 
  <code>P</code> only builds with <code>v1.1.0</code> and <code>A</code> only builds with <code>v1.0.0</code>.</p>
  
  <p>Dependency graph:</p>
  
  <pre><code>P -&gt; A (v1.0.0) -&gt; B(v1.0.0)
  P -&gt; B (v1.1.0)
  </code></pre>
  
  <p>Is there any way to build this project with different versions. I heared about <strong>vendoring</strong> but I'm not sure if this would cause the dependency to use a different <code>B</code> module version.</p>
  
  <p>And if it could provide a solution for the conflicting package versions, does the go tool recognize modules using vendoring if the dependencies do not include a vendor folder (some people say, you should not upload the vendor folder) in their git repository (In this case module <code>A</code> does not ship with a vendor folder, but the developer called <code>go mod vendor</code> locally), does the go get command respect vendor folders of dependencies (or can it detect that the module used vendoring without an upstream vendor folder)?</p>