首先将nexus配置为从工作目录中的本地存储库查找

时间:2015-07-20 13:03:52

标签: maven maven-3 nexus

我有一个项目,它有一个名为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>

1 个答案:

答案 0 :(得分:3)

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

可以在mirrorOf字段中使用其他模式。可能有价值的设置是使用external:*。这匹配除了使用localhost或基于文件的存储库的存储库之外的所有存储库。

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

<强>更新

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

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