配置nexus首先从工作目录的本地仓库中查找

Configure nexus to look from local repository in the working directory first

我有一个项目,它有一个名为 repo 的目录,其中存储了工件。当我用 maven 构建它时,nexus 说无法解析依赖项;当我从 Maven 设置中删除 nexus 时,它可以找到工件。

我希望 maven 在询问 nexus 或类似的东西之前查看此目录,这样我就可以构建它而不必每次都禁用 nexus。我怎样才能做到这一点?我当前的 Maven 设置 (~/.m2/settings.xml):

<settings>
    <localRepository>/home/a/.m2/repository</localRepository>

    <mirrors>
        <mirror>
            <!--This sends everything else to /public -->
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <!--<url>http://nexus.yourdomain.nl/content/groups/public</url> -->
            <url>http://localhost:8081/nexus/content/groups/public</url>
        </mirror>
    </mirrors>
    <profiles>
        <profile>
            <id>nexus</id>
            <!--Enable snapshots for the built in central repo to direct -->
            <!--all requests to nexus via the mirror -->
            <repositories>
                <repository>
                    <id>central</id>
                    <url>http://central</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>true</enabled></snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>central</id>
                    <url>http://central</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>true</enabled></snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
        <!-- if you want to be able to switch to the defaultprofile profile put this in the active profile -->
        <profile>
            <id>defaultprofile</id>
            <repositories>
                <repository>
                    <id>maven.default</id>
                    <name>default maven repository</name>
                    <url>http://repo1.maven.org/maven2</url>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
                <repository>
                    <id>maven.snapshot</id>
                    <name>Maven snapshot repository</name>
                    <url>http://people.apache.org/repo/m2-snapshot-repository</url>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories> 
        </profile>
    </profiles>
    <activeProfiles>
        <!--make the profile active all the time -->
        <activeProfile>defaultprofile</activeProfile>
    </activeProfiles>
</settings>

Nexus 网站说 * 的 mirrorOf 模式会导致任何存储库请求被重定向到此镜像和您的单个存储库组,在示例中是 public 组。

可以在 mirrorOf 字段中使用其他模式。一个可能有价值的设置是使用 external:*。这匹配所有存储库,但使用本地主机或基于文件的存储库除外。

external:* 代替 * 解决了我的问题。

更新:

第二种解决方案: 将此选项传递给 Maven 也可以正常工作:

mvn -Dmaven.repo.local=/path/to/repo