0

我最近想将 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 的优势是什么?

4

1 回答 1

1

有几个优点:

  1. 当您开始一个新项目时,例如从头开始构建一个开源项目,下载速度会更快。
  2. 如果 Maven Central 曾经离线或响应缓慢,它不会对您造成严重影响。Nexus 缓存会缓冲你。
  3. 您可以设置自己的托管存储库并“真正”部署快照版本(在版本名称中包含时间戳) - 而不仅仅是在 .m2 缓存中使用 -SNAPSHOT
  4. 这是了解真正的 Maven 存储库如何工作的好方法,这是大型组织内部的一项重要技能(您不想通过在生产 Nexus 存储库上反复试验来学习)。

编辑

请参阅:Sonatype:为什么使用存储库?

于 2013-04-01T03:44:51.767 回答