即使我是网络中唯一的开发人员,我还应该使用Nexus Repository Manager吗?

时间:2013-03-31 14:36:02

标签: maven jar repository dependency-management nexus

我最近想将Nexus集成到我的家庭Java项目中,只是为了了解它的好处。正如我从这里的帖子和nexus网站上读到的那样,它的主要用途是:

  • Maven Central Repo拥有超过20万件文物。获取工件的本地副本。每次需要时都不要下载。当您指定工件时,将询问第一个nexus是否具有工件,如果是,则将从本地缓存中读取它。如果不是nexus将从中央仓库下载它。无论Central Repo中的原始工件如何,您的构建都将继续工作。加快你的构建等。

现在我不明白的是:它和maven不一样吗?第一次在pom.xml中定义新工件时,jar将从中央仓库下载。它将放在〜/ .m2 / repository中。只要有副本,下次就会从这里读取。即使我创建了一个新项目,也会从此存储库中使用下载的jar。

我想,如果我的网络中还有其他开发人员,我也需要Nexus,他们也需要这些罐子。所以我们不需要从中央单独下载这些罐子。我们将定义基于网络的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/目录中的罐子与http://localhost:8081/nexus/content/groups/public/中的罐子完全相同。 在我的案例中,Nexus有什么优势?

1 个答案:

答案 0 :(得分:1)

有几个优点:

  1. 当您启动一个新项目时,例如从头开始构建一个开源项目,下载速度会更快。
  2. 如果Maven Central处于脱机状态或响应缓慢,则不会对您造成严重影响。 Nexus缓存将缓冲你。
  3. 您可以设置自己的托管存储库并部署快照版本(在版本名称中包含时间戳)“for real” - 而不是像在.m2缓存中一样使用-SNAPSHOT
  4. 这是了解真实Maven资源库如何工作的好方法,这是大型组织内部的一项重要技能(并且您不希望通过对生产Nexus存储库的反复试验来学习)。
  5. 修改

    请参阅:Sonatype: Why use a repository?