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]
В документации указывается ряд проблем, которые могут присутствовать, однако ни один из них не применяется.
Идеи
Я пробовал следующее, согласно документации:
Я также пробовал следующие команды:
mvn -U
mvn clear -U
Я попытался использовать Maven 3.0.5, но это тоже не удалось.
Вопрос
Как заставить Maven использовать локальную версию библиотеки, а не пытаться найти библиотеку, которая еще не доступна для загрузки?
Связанные
Связанные вопросы и информация, которые не помогли решить проблему:
Ответы
Ответ 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>
Другое решение этой проблемы:
- Запустите свой собственный репозиторий Maven.
- скачать банку
- Установите банку в хранилище.
- Добавьте код в ваш pom.xml что-то вроде:
Где http://localhost/repo - это URL вашего локального репо:
<repositories>
<repository>
<id>wmc-central</id>
<url>http://localhost/repo</url>
</repository>
<-- Other repository config ... -->
</repositories>