Подтвердить что ты не робот

POM для проекта отсутствует, информация о зависимости отсутствует

Фон

Попытка добавить библиотеку Java в локальный репозиторий Maven, используя чистую установку Apache Maven 3.1.0 с Java 1.7. Вот как был добавлен файл архива Java:

mvn install:install-file \
  -DgroupId=net.sourceforge.ant4x \
  -DartifactId=ant4x \
  -Dversion=0.3.0 \
  -Dfile=ant4x-0.3.0.jar \
  -Dpackaging=jar

Это создало следующую структуру каталогов:

$HOME/.m2/repository/net/sourceforge/ant4x/
├── 0.3.0
│   ├── ant4x-0.3.0.jar.lastUpdated
│   └── ant4x-0.3.0.pom.lastUpdated
└── ant4x
    ├── 0.3.0
    │   ├── ant4x-0.3.0.jar
    │   ├── ant4x-0.3.0.pom
    │   └── _remote.repositories
    └── maven-metadata-local.xml

Файл проекта pom.xml ссылается на зависимый проект (дерево выше) следующим образом:

<properties>
  <java-version>1.5</java-version>
  <net.sourceforge.ant4x-version>0.3.0</net.sourceforge.ant4x-version>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
...
<dependency>
  <groupId>net.sourceforge</groupId>
  <artifactId>ant4x</artifactId>
  <version>${net.sourceforge.ant4x-version}</version>
  <scope>provided</scope>
</dependency>

Проблема

После запуска mvn compile была возвращена следующая ошибка (полный журнал в Pastebin):

[ERROR] Failed to execute goal on project ant4docbook: Could not resolve dependencies for project net.sourceforge:ant4docbook:jar:0.6-SNAPSHOT: Failure to find net.sourceforge:ant4x:jar:0.3.0 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]

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

Идеи

Я пробовал следующее, согласно документации:

  • Скопировать настройки по умолчанию в домашний каталог пользователя для Maven:
    cp /opt/apache-maven-3.1.0/conf/settings.xml $HOME/.m2/.
  • Отредактируйте файл user settings.xml.
  • Обновить значение для локального репозитория:
    ${user.home}/.m2/repository
  • Сохраните файл.

Я также пробовал следующие команды:

mvn -U
mvn clear -U

Я попытался использовать Maven 3.0.5, но это тоже не удалось.

Вопрос

Как заставить Maven использовать локальную версию библиотеки, а не пытаться найти библиотеку, которая еще не доступна для загрузки?

Связанные

Связанные вопросы и информация, которые не помогли решить проблему:

4b9b3361

Ответ 1

Изменить:

<!-- ANT4X -->
<dependency>
  <groupId>net.sourceforge</groupId>
  <artifactId>ant4x</artifactId>
  <version>${net.sourceforge.ant4x-version}</version>
  <scope>provided</scope>
</dependency>

To:

<!-- ANT4X -->
<dependency>
  <groupId>net.sourceforge.ant4x</groupId>
  <artifactId>ant4x</artifactId>
  <version>${net.sourceforge.ant4x-version}</version>
  <scope>provided</scope>
</dependency>

groupId of net.sourceforge неверен. Правильное значение net.sourceforge.ant4x.

Ответ 2

Область действия <scope>provided</scope> дает вам возможность сказать, что банка будет доступна во время выполнения, поэтому не связывайте ее. Это не означает, что он вам не нужен во время компиляции, поэтому maven попытается загрузить его.

Теперь я думаю, что нижеприведенный артефакт вообще не существует. Я пытаюсь найти в Google, но не могу найти. Следовательно, вы получаете эту проблему.

Измените groupId на <groupId>net.sourceforge.ant4x</groupId>, чтобы получить последнюю банку.

<dependency>
  <groupId>net.sourceforge.ant4x</groupId>
  <artifactId>ant4x</artifactId>
  <version>${net.sourceforge.ant4x-version}</version>
  <scope>provided</scope>
</dependency>

Другое решение этой проблемы:

  1. Запустите свой собственный репозиторий Maven.
  2. скачать банку
  3. Установите банку в хранилище.
  4. Добавьте код в ваш pom.xml что-то вроде:

Где http://localhost/repo - это URL вашего локального репо:

<repositories>
    <repository>
        <id>wmc-central</id>
        <url>http://localhost/repo</url>
    </repository>
    <-- Other repository config ... -->
</repositories>