使用maven编译Sonatype Nexus源码

首先需要使用git客户端从github下载nexus的最新源码:https://github.com/sonatype/nexus

因为nexus本身就是一个非常复杂的maven项目,因为我们只能使用maven来编译。如果我直接编译,nexus就会报各种找不到包的错误。

原因是我们需要把nexus官方的一个仓库加入到maven的settings文件中。代码为:

<settings>
  <profiles>
    <profile>
      <id>sonatype-forge</id>
      <repositories>
        <repository>
          <id>sonatype-forge</id>
          <url>http://repository.sonatype.org/content/groups/forge/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>sonatype-forge</id>
          <url>http://repository.sonatype.org/content/groups/forge/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>sonatype-forge</activeProfile>
  </activeProfiles>
</settings>

然后再次编译,就应该可以构建成功了。由于nexus的仓库在国外,个人感觉速度比maven中央仓库要慢一个等级。在编译过程中,maven会自动执行一些插件和完成相关的单元测试。大概等待1-2个小时左右(由电脑性能和网络决定),就可以编译完成了。