Java maven settings.xml中的存储库与插件存储库

Java maven settings.xml中的存储库与插件存储库,java,maven,nexus,Java,Maven,Nexus,我的~/.m2/文件夹中有以下settings.xml文件: <settings> <profiles> <profile> <id>my-repositories</id> <repositories> <repository> <id>thirdparty

我的~/.m2/文件夹中有以下settings.xml文件:

<settings>
    <profiles>
        <profile>
            <id>my-repositories</id>
            <repositories>
                <repository>
                    <id>thirdparty-repository</id>
                    <name>Thirdparty repository</name>
                    <url>https://mynexus/repository/thirdparty/</url>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>thirdparty-plugin-repository</id>
                    <name>Thirdparty plugin repository</name>
                    <url>https://mynexus/repository/thirdparty/</url>
                </pluginRepository>
            </pluginRepositories>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>my-repositories</activeProfile>
    </activeProfiles>
</settings>
现在,如果我重新启用它并删除另一个:
thirdparty plugin repository
我现在得到这个错误:

 Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central (https://repo.maven.apache.org/maven2): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
只有当我同时启用它们时,它才能工作


为什么我需要指向同一nexus存储库的
存储库
插件存储库

我有一个这样的pb,idk如果有帮助的话,但是通过POM.xml中的代码,我的nexus pb得到了解决

    <distributionManagement>
    <repository>
        <id>nexus</id>
        <name>releases</name>
        <url>https://mynexus/repository/thirdparty/</url>
    </repository>
    <snapshotRepository>
        <id>nexus</id>
        <name>Snapshots</name>
        <url>https://mynexus/repository/thirdparty/</url>
    </snapshotRepository>
</distributionManagement>

关系
释放
https://mynexus/repository/thirdparty/
关系
快照
https://mynexus/repository/thirdparty/


关系
公开的
https://mynexus/repository/thirdparty/
真的
真的

希望对您有所帮助

在Nexus中定义了一个公共组,该组应包含所有需要的存储库,无需在您自己的pom或settings.xml文件中进行配置。应仅配置Nexus的公共组

你唯一需要做的就是用你自己的位置在镜像中更改url

<settings>
  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8081/repository/maven-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>
</settings>

关系
*
http://localhost:8081/repository/maven-公开的/
关系
中心的
http://central
真的
真的
中心的
http://central
真的
真的
关系

假设您定义了一个具有某些依赖项的插件。将在所有
定义中搜索这些依赖项。大概是这样的:

<plugin>
   <groupId>org.liquibase</groupId>
   <artifactId>liquibase-maven-plugin</artifactId>
   <version>${liquibase.version}</version>
   <dependencies>
       <dependency>
          <groupId>io.herd.common</groupId>
          <artifactId>common-herd</artifactId>
          <version>${common.version}</version>
       </dependency>
   </dependencies>
</plugin>

org.liquibase
liquibase maven插件
${liquibase.version}
普通的
普通牛群
${common.version}
即使您定义了一个
,其中包含common herd工件,Maven也不会下载它,除非您还有一个
包含它。当然,普通牧群工件不能出现在Maven中央存储库中


几个月前我遇到了这个问题,Maven只是在我添加了一个

之后才下载了特定的插件依赖项。您似乎遇到了证书问题:找不到请求的targeYes的有效证书路径,但为什么在启用这两个repo时我没有得到这个错误?因为依赖项无法基于关于上述错误。为什么我需要添加镜像?我不能只添加我需要的存储库,反正它们在nexus中。
<settings>
  <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8081/repository/maven-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>
</settings>
<plugin>
   <groupId>org.liquibase</groupId>
   <artifactId>liquibase-maven-plugin</artifactId>
   <version>${liquibase.version}</version>
   <dependencies>
       <dependency>
          <groupId>io.herd.common</groupId>
          <artifactId>common-herd</artifactId>
          <version>${common.version}</version>
       </dependency>
   </dependencies>
</plugin>