Локальный репозиторий Nexus извлекает все, кроме основного jar, через зависимость POM.

Наш локальный репозиторий Nexus кажется непоследовательным при загрузке зависимостей. Он стянет помпон и даже проверит банки и т. д., но не основную банку, которая мне нужна! Поэтому, когда я просматриваю индексы в нашем центральном (прокси) репозитории для drools-compiler: org/drools/drools-compiler, я вижу следующие файлы:

  • drools-компилятор-6.2.0.CR4-javadoc.jar
  • drools-компилятор-6.2.0.CR4-sources.jar
  • drools-compiler-6.2.0.CR4-test-sources.jar
  • drools-компилятор-6.2.0.CR4-tests.jar
  • drools-компилятор-6.2.0.CR4.pom

отсутствующий важный файл:
drools-compiler-6.2.0.CR4.jar

Когда я просматриваю Remote, там есть все, включая ключевую банку.

Когда я запускаю mvn clean install (через свою IDE STS 3.6.3), я вижу следующее сообщение об ошибке:

Не удалось выполнить цель проекта:
Не удалось разрешить зависимости для проекта:
Не удалось собрать зависимости в org.drools:drools-compiler:jar:6.2.0.CR4:
Не удалось прочитать дескриптор артефакта для org.drools:drools-compiler:jar:6.2.0.CR4:
Не удалось найти org.jboss.dashboard-builder:dashboard-builder-bom:pom:6.2.0.CR4 в кэше локальный репозиторий, повторная попытка разрешения не будет предприниматься до тех пор, пока не истечет интервал обновления nexus или не будут принудительно обновлены

Есть много других зависимостей, которые были удалены в прошлом, репозиторий был там в течение долгого времени (я не настраивал его, просто разбираюсь сейчас!) ... слюни JBoss не единственный раз Я вижу это, это просто моя самая насущная забота сейчас.

Я погуглил, некоторые сообщения кажутся актуальными (этот один почти идентичен, но не решен), но не может найти решение. Удаленная загрузка индексов была настроена на наших локальных прокси-серверах Jboss и Central. Я пытался очистить кеш, перестроить индексы, добавить "-U" к моей команде mvn... но безрезультатно. Единственный раз, когда я могу заставить свой проект собраться, это когда я полностью обхожу свой локальный репозиторий (пустой .m2/settings.xml) и извлекаю прямо из общедоступного Central или JBoss. Кто-нибудь знает, что здесь может происходить неправильно?

ОБНОВЛЕНИЕ: дополнительная информация, которая может помочь: репозиторий 'nexus', определенный как зеркало в моем файле settingsx.xml (ниже), представляет собой групповой репозиторий, состоящий из (в этом порядке):
* Central (http://repo1.maven.org/maven2/)
* общедоступный JBoss (http://repository.jboss.org/nexus/content/groups/public/)
* Репозиторий наших собственных загруженных локальных банок...

Следуя совету @Steve, я копнул глубже, чем отсутствующие файлы компилятора drools, и обнаружил, что org.jboss.dashboard-builder.dashboard-builder-bom... не существует в Central, что интересно, но он существует в JBoss. Насколько я понимаю, используя группу репозиториев, он должен запрашивать следующее репо в списке, если он что-то не находит, верно? Любые советы очень ценятся!

настройки.xml:

  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>(local server)/nexus/content/groups/public</url>
    </mirror>    
  </mirrors>
  <profiles>
    <profile>
      <id>nexus</id>
      <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>
    <activeProfile>nexus</activeProfile>
  </activeProfiles>

POM.xml

<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.mypackage.here</groupId>
    <artifactId>TaskLaunchManager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>TaskLaunchManager</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <app.name>task-launch-manager</app.name>
        <log4j.version>1.2.16</log4j.version>
        <junit.version>4.8.1</junit.version>
        <drools.version>6.2.0.CR4</drools.version>
        <slf4j.version>1.7.9</slf4j.version>
    </properties>

    <!-- Drools Maven BOM (Bill of Materials) -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.drools</groupId>
                <artifactId>drools-bom</artifactId>
                <type>pom</type>
                <version>${drools.version}</version>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.kie</groupId>
                <artifactId>kie-bom</artifactId>
                <type>pom</type>
                <version>${drools.version}</version>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!-- Required dependencies -->
    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
        <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
            <scope>compile</scope>
        </dependency>       
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-compiler</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.kie</groupId>
            <artifactId>kie-internal</artifactId>
        </dependency>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-decisiontables</artifactId>
        </dependency>

    </dependencies>

</project>

person Fred A. J.    schedule 02.02.2015    source источник
comment
Это работает с 6.1.0.Final или 6.0.0.Final?   -  person laune    schedule 03.02.2015
comment
Учитывая, что /nexus/content/groups/public является виртуальным репозиторием, стоит еще раз проверить, существуют ли в нем банки. Возможно, вам просто нужно добавить удаленный репозиторий JBoss в общедоступный виртуальный репозиторий. И всегда стоит зайти на экраны администратора Nexus и запустить переиндексацию.   -  person Steve    schedule 03.02.2015
comment
@laune 6.1.0.Final имеет ту же проблему, но вернемся к версиям 6.0.0 и 6.0.1, банка есть.   -  person Fred A. J.    schedule 03.02.2015
comment
Я рекомендую вам опубликовать это в списке пользователей Drools. Использование Drools — groups.google.com/forum/#!forum/drools-usage   -  person laune    schedule 03.02.2015
comment
Спасибо @laune! Только что опубликовал в [Drools Setup] (groups.google.com/forum/#! forum/drools-setup), так как там это казалось более актуальным (и ярко-красное предложение было индикатором!)   -  person Fred A. J.    schedule 03.02.2015
comment
@Steve Я копнул глубже по вашему предложению и обнаружил, что, хотя основная банка существует в Central, построитель панели инструментов есть только в JBoss. Но как групповой репозиторий, который все еще должен работать, верно? Подробнее в обновлении выше.   -  person Fred A. J.    schedule 03.02.2015


Ответы (1)


Хорошо, проблема решена! Потребовалось несколько шагов, некоторые из которых упоминаются в другом месте на stackoverflow и уже были безуспешно опробованы, но порядок здесь действительно имел значение:

  1. Артефакт построителя панели мониторинга находился не в прокси-сервере Maven Central, а в общедоступном прокси-сервере JBoss. Этот прокси должен был быть создан локально (это было)
  2. Поскольку артефакты нужно было получать из Central, а также из JBoss, необходимо было создать репозиторий группы для хранения их обоих (так было)
  3. В групповом репозитории нужно было добавить к нему JBoss... (это был не facepalm)... он по-прежнему был указан в списке «Доступные репозитории», а не в «Упорядоченных групповых репозиториях».
  4. Даже после добавления ошибка сборки по-прежнему сохранялась из-за кэширования, а не перестроенных индексов и т. д. Мне нужно было принудительно обновить с помощью переключателя «-U», как указано в этом stackoverflow post: mvn clean install -U
  5. Даже после успешной сборки в моей среде IDE проект по-прежнему указывал на ошибки в файле pom. Это произошло из-за m2eclipse... и было решено с помощью действия: Maven > Обновить проект... > проверка "Принудительное обновление моментальных снимков/выпусков".
person Fred A. J.    schedule 04.02.2015