如何确定我需要将哪些存储库添加到 Sonatype Nexus for Mule ESB

How to determine what repositories I need to add to Sonatype Nexus for Mule ESB

我们一直在使用 Maven 构建 MuleESB。一切正常。

但是,我们最近添加了 Sonatype Nexus 作为存储库管理器。

现在,使用 Maven 构建 MuleESB,它现在配置为镜像我们的内部 public Nexus URL,许多传递依赖项未找到并且构建失败。

我必须去看看没有找到哪个传递依赖项,通过查看 pom 文件找到它所在的 public 存储库,然后将其添加为 Nexus 上的代理存储库。我正在为每个未解决的依赖项重复此操作。

请注意,我已经添加了 mulesoft 版本和快照存储库。似乎是在其他存储库(不是 Mulesoft 存储库)中发现的传递依赖项失败了。

确保所有必需的存储库都添加到我们的 Sonatype Nexus 存储库的 best/easiest 方法是什么?

--- 编辑 ---- 到目前为止,我发现如果我将以下存储库添加到 Nexus,我可以构建 Mule ESB Community Edition,因为所有依赖项都已找到。

Here is the maven settings I use with Mule development. 
You can use it to figure out how to set up your repository.


<?xml version="1.0" encoding="UTF-8"?>
<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>/Users/MuleDev/.m2/repository</localRepository>
  <pluginGroups>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers>
    <server>
      <id>mule-nexus-ee-releases</id> 
      <username>xxx</username>
      <password>xxx</password>
    </server>
     <server>
      <id>mule-ci-releases</id>
      <username>xxxx</username>
      <password>xxx</password>
    </server>
    <server>
      <id>mule-ci-snapshots</id>
      <username>xxxx</username>
      <password>xxx</password>
    </server>
    <server>
      <id>mule-ee-releases</id> 
      <username>xxxx</username>
      <password>xxx</password>
    </server>
    <server>
      <id>mule-ee-snapshots</id> 
      <username>xxxx</username>
      <password>xxxxx</password>
    </server>
    <server>
      <id>mule-ee-thirdparty</id> 
      <username>xxxxx</username>
      <password>xxxx</password>
    </server>
    <server>
      <id>mule-ee-dependencies</id> 
      <username>xxxx</username>
      <password>xxxx</password>
    </server>
    <server>
      <id>mule-third-party</id> 
      <username>xxxx</username>
      <password>xxxx</password>
    </server>    
  </servers>
  <mirrors>
  </mirrors>
  <profiles>
    <profile>
      <id>default-profile</id>
      <repositories>
          <repository>
            <id>jboss</id>
            <url>https://repository.jboss.org/nexus/content/repositories/</url>
            <releases>
              <enabled>true</enabled>
            </releases>
            <snapshots>
              <enabled>true</enabled>
            </snapshots>
          </repository>
        <repository>
          <id>mule-releases</id>
          <name>Mule Releases Repository</name>
          <url>http://repository.mulesoft.org/releases/</url>
        </repository>
        <repository>
          <id>mule-ee-releases</id>
          <name>MuleEE Releases Repository</name>
          <url>https://repository-master.mulesoft.org/nexus/content/repositories/ci-releases/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
        </repository>
        <repository>
          <id>mule-ee-thirdparty</id>
          <name>Local repository for thirdparty</name>
          <url>https://repository-master.mulesoft.org/nexus/content/repositories/ext-releases/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
        </repository>
        <repository>
          <id>mule-ee-dependencies</id>
          <name>Mule EE Dependencies</name>
          <url>https://repository-master.mulesoft.org/nexus/content/groups/mule-ee-dependencies/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
        <repository>
          <id>mule-nexus-ee-releases</id>
          <name>Mule EE Releases Repository</name>
          <url>https://repository.mulesoft.org/nexus-ee/content/repositories/releases-ee/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
        <repository>
          <id>mule-nexus-releases</id>
          <name>Mule CE Releases Repository</name>
          <url>https://repository.mulesoft.org/nexus/content/repositories/releases</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
<repository>
    <id>codehaus-mule-repo</id>
    <name>codehaus-mule-repo</name>
    <url>
      https://repository-master.mulesoft.org/nexus/content/groups/public/
    </url>
    <layout>default</layout>
  </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>mule-ee-snapshots</id>
          <url>https://repository-master.mulesoft.org/nexus/content/repositories/ci-snapshots/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
          <layout>default</layout>
        </pluginRepository>

        <pluginRepository>
          <id>mule-ee-releases</id>
          <url>https://repository-master.mulesoft.org/nexus/content/repositories/ci-releases/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
          <layout>default</layout>
        </pluginRepository>
        <pluginRepository>
          <id>mule-nexus-releases</id>
          <name>Mule CE Releases Repository</name>
          <url>https://repository.mulesoft.org/nexus/content/repositories/releases</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
      <activation>
          <activeByDefault>true</activeByDefault>
      </activation>
    </profile>
  </profiles>
</settings>

您正在遵循正确的流程:

  • 确定您需要访问的存储库
  • 为每个人创建一个代理存储库,确保设置适当的策略(快照与发布),对于代理组确保创建两个具有相同 URL 和不同策略的代理存储库,如果它有混合内容
  • 将存储库添加到您访问 Nexus 存储库管理器的组中,请记住组中的顺序很重要,将大型、高性能的存储库以及您的内部存储库放在顶部

在您的列表中,您可能可以删除工件存储库,因为工件将位于其他存储库中。此外,maven.org(中央存储库)已在 Nexus 存储库管理器中预先配置,因此您可能不必添加它。

最好一次添加一个存储库并尝试从全新安装(删除本地 Maven 存储库)构建或在您的 mvn 调用中使用 -U 强制更新。

如果您需要更多信息,可以在 documentation 中找到所有这些以及更多信息。

社区开发github上用的pom可以用,这里是link

https://github.com/mulesoft/mule/blob/mule-3.x/pom.xml