Почему maven загружает jar из весеннего репо?

У меня есть зеркало в settings.xml и pom.xml вот так

settings.xml

  <?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>${user.home}/.m2/repository</localRepository>

    <pluginGroups>
    </pluginGroups>

    <proxies>
    </proxies>
    <servers>
      <server>
        <id>nexus-release</id>
        <username>username</username>
        <password>password</password>
      </server>

      <server>
        <id>nexus-snapshot</id>
        <username>username</username>
        <password>password</password>
      </server>
    </servers>

    <mirrors>
       <mirror>
        <id>nexus-any</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus any</name>
        <url>http://anyHost:2227/repository/maven-public</url>
      </mirror>
    </mirrors>
    <profiles>
    </profiles>
  </settings>

pom.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0"
     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.my.projecy</groupId>
<artifactId>my-project</artifactId>
<packaging>pom</packaging>
<version>1.3.0</version>

<modules>
    <module>my-project-pool</module>
    <module>my-project-business</module>
    <module>my-project-web-deploy</module>
    <module>my-project-task-deploy</module>
    <module>my-project-stats</module>
    <module>my-project-bizlog</module>
</modules>

<name>my-project</name>
<description>Educational Administration Offline System</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
    <relativePath/>
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <mybatis.version>1.3.2</mybatis.version>
    <httpClient.version>4.5.5</httpClient.version>
    <maven.plugins.jar.version>3.1.0</maven.plugins.jar.version>
    <maven.plugins.assembly.version>3.1.0</maven.plugins.assembly.version>
    <offline.api.version>1.3.1-SNAPSHOT</offline.api.version>
    <online.api.version>1.3.0-SNAPSHOT</online.api.version>
    <starter.httpclient.version>1.0.0-SNAPSHOT</starter.httpclient.version>
    <lombok.version>1.16.2</lombok.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>com.my.projecy.starter</groupId>
        <artifactId>httpclient-starter</artifactId>
        <version>${starter.httpclient.version}</version>
    </dependency>

    <dependency>
        <groupId>com.my.projecy</groupId>
        <artifactId>bluesky-common</artifactId>
        <version>1.1-SNAPSHOT</version>
    </dependency>

    <dependency>
        <groupId>com.my.projecy</groupId>
        <artifactId>ea-api-online</artifactId>
        <version>${online.api.version}</version>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>${httpClient.version}</version>
        </dependency>

        <dependency>
            <groupId>com.my.projecy</groupId>
            <artifactId>my-project-pool</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>com.my.projecy</groupId>
            <artifactId>my-project-business</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>com.my.projecy</groupId>
            <artifactId>my-project-web-deploy</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>com.my.projecy</groupId>
            <artifactId>my-project-task-deploy</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>com.my.projecy</groupId>
            <artifactId>ea-api-offline</artifactId>
            <version>${offline.api.version}</version>
        </dependency>

        <dependency>
            <groupId>com.my.projecy</groupId>
            <artifactId>my-project-stats</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>com.my.projecy</groupId>
            <artifactId>my-project-bizlog</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>${maven.plugins.assembly.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

Но когда я пытаюсь скомпилировать свой проект, я получаю такую ​​ошибку:

Could not find artifact com.my.package:httpclient-starter:jar:1.0.0-SNAPSHOT
in spring-snapshot (https://repo.spring.io/snapshot)
  1. Пытался удалить все папки в локальном репо или mvn clean compile -U
  2. Я попробовал grep "repo.spring.io" с settings.xml и pom.xml и ничего не получил
  3. Для меня работает только использование одного репо.

Нравится:

<mirror>
  <id>my-id</id>
  <mirrorOf>*</mirrorOf>
  <name>any name</name>
  <url>http://anyHost:2227/repository/maven-public</url>
</mirror>     

Как я могу узнать, почему maven загружает эту зависимость из весеннего репо?

Без pom файла сложно сказать?

khmarbaise 17.09.2018 10:21

@khmarbaise Больше информации обновлено.

Karl.Li 17.09.2018 10:31

попробуйте запустить mvn: dependency tree. Это переходная зависимость?

Paul Whelan 17.09.2018 10:33

Дело в том, что многие из весенних - xxx pom содержат определение весенних репозиториев.

khmarbaise 17.09.2018 10:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
4
1 092
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Правильная установка settings.xml для использования менеджера репозитория должна выглядеть так:

<settings>
  <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>
  <servers>
    <!-- Possible authentications for access to nexus -->
    <server>
      <id>snapshots</id>
      <username>xxx</username>
      <password>xxx</password>
    </server>
    <server>
      <id>releases</id>
      <username>xxx</username>
      <password>xxx</password>
    </server>
  </servers>
</settings>

это правильно перенаправит все запросы, которые определены в вашем собственном или другом pom (например, в репозиториях spring -boot), в ваш внутренний менеджер репозитория.

Если у меня есть сторонняя зависимость <mirrorOf>*</mirrorOf>, это не работает для меня. Если я установлю <mirrorOf>central</mirrorOf> с вашим шаблоном settings.xml, maven по-прежнему будет загружать зависимость из репозитория Spring.

Karl.Li 17.09.2018 10:51

Если вы являетесь сторонним лицом, вы должны загрузить их в свой менеджер репозитория и настроить его в своем менеджере репозитория ... и оставить *, как я предлагал ..

khmarbaise 17.09.2018 12:58

Я не видел "httpclient-starter: jar: 1.0.0-SNAPSHOT" в этой банке в repo.spring.io.

1) Попробуйте открыть в браузере repo.spring.io. Затем проверьте, существует ли в нем соответствующая банка, а также проверьте настройки прокси-сервера в конфигурации settings.xml.

https://repo.spring.io/snapshot

Настройки прокси-сервера Maven

2) com.my.package: httpclient-starter: jar: 1.0.0-SNAPSHOT, если существует, удалите его вручную из репозитория .m2

3) mvn clean install.

4) Проверьте свой RepositoryId и имя репозитория, как показано на рис.

Нет, в моем зеркале есть com.my.package:httpclient-starter:jar:1.0.0-SNAPSHOT, который для меня не работает, central работает для меня, но, на мой взгляд, это не очень хорошая идея.

Karl.Li 17.09.2018 11:22

Вероятно, <mirrorOf> central </mirrorOf> тогда имя неправильное. еще раз проверьте имя зеркала

Narayan Yerrabachu 17.09.2018 11:30
stackoverflow.com/questions/35264981/… проверьте эту ссылку. Возможно, это может вам помочь.
Narayan Yerrabachu 17.09.2018 11:32

@ Karl.Li Проверьте свой RepositoryId и имя репозитория, как показано на рис.

Narayan Yerrabachu 17.09.2018 11:42

Начнем с части загрузки Maven из репозитория снимков Spring. Из того, что вы показали нам в вопросе, по крайней мере неясно (если не существует), что вы определили какое-либо хранилище снимков в своем проекте. Поскольку это проект Spring Boot, он установит его через родительский проект (..repo.spring.io..). Вот почему ваш проект обращается к этому конкретному серверу.

Вы пытаетесь скачать банку, которую наверняка поставили на нексус, не так ли? Версия - <sth>-SNAPSHOT, которая заставляет Maven пытаться получить данные с некоторого сервера моментальных снимков.

Ваше зеркало - это центральный репозиторий mirrorOf, где, как я полагаю, ваша банка не живет, а находится «в» зеркале.

Моя идея состояла бы в том, чтобы установить ваше зеркало в качестве репозитория в pom.xml вашего проекта следующим образом

<repositories>
  <repository>
    <id>myInternalRepository</id>
    <url>http://localhost:8081/nexus/content/groups/???</url>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
</repository>

вы можете установить банку httpclient-starter: jar: 1.0.0-SNAPSHOT в локальный репозиторий maven с помощью команды maven install

Другие вопросы по теме