If repo A is specified first in the build config, then the jar and pom from repo A will be downloaded to the local repository. If another build is then run which requires org:myproj:1.0 from repo B, Maven will use the incorrect jar and POM from repo A, since it is already available in the local repo. This is known as a GAV conflict because the two repositories have conflicting data and cannot be safely used together.
To solve this problem, Maven should use a separate local repository for each remote repository. Each local repository would function as a cache for the associated remote repository. The name of each local repository cache follows the format <repositoryId>-<url-hash>. In the event that the same repository ID is used to represent two different remote URLs, two separate repository caches would be created. If two repository IDs point to the same URL, the hash value can be used to identify that they are the same, and possibly store metadata that allows Maven to recognize the two as being the same.
.m2 +- repositories | +- central-<hash> | +- repoA-<hash> | \- repoB-<hash> \- workspace