我最近想将 Nexus 集成到我的家庭 Java 项目中,只是为了了解它有什么用处。正如我从这里的帖子和 nexus 网站上读到的,它的主要使用目的是:
- Maven Central Repo 拥有超过 200k 的工件。获取工件的本地副本。不要在每次需要时下载。当您指定一个工件时,首先会询问它是否有工件,如果是,它将从您的本地缓存中读取。如果不是,nexus 将从中央存储库下载它。无论 Central Repo 中的原始工件如何,您的构建都将继续工作。加快构建速度等。
现在我在这里不明白的是:它与maven不一样吗?当我第一次在 pom.xml 中定义一个新工件时,该 jar 将从中央仓库下载。它将被放置在 ~/.m2/repository 中。下次只要有副本就会从这里读取。即使我创建了一个新项目,下载的 jar 也会从此存储库中使用。
我想,如果我的网络中有另一个开发人员也需要这些 jar,我会需要 Nexus。所以我们不需要从中央单独下载这些 jar。我们将定义一个基于网络的 repo (Nexus),并将 jars 下载到这个存储库。其他开发人员无需访问中央存储库即可访问此存储库。
就我而言,我看不到 nexus 的任何优势。我现在有了 Nexus 建议使用的 settings.xml:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers/>
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<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>
</profiles>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
<proxies/>
</settings>
我在 /.m2/repository/ 目录中的 jars 与 .m2/repository/ 目录中的 jars 完全相同http://localhost:8081/nexus/content/groups/public/
。就我而言,Nexus 的优势是什么?