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