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

POM для <name> недействителен, транзитные зависимости (если таковые имеются) не будут доступны

Этот вопрос устарел и больше не имеет значения. С тех пор я переехал в Gradle для моей сборки проекта и больше не могу проверить, что ответы работают или не работают.

У меня возникли проблемы с Maven. Позвольте мне сначала описать мою настройку проекта:

Framework
|  -- Apache Commons Math 3.0
|  -- Bouncy Castle 1.5
|  -- etc.. (lots more)
|________
|        Client
|        | -- GUI libraries
|        | -- etc.
|
|________
         Server
         | -- Server Libraries
         | -- etc.

Итак, у меня есть структура, которая содержит большинство зависимостей, а затем два проекта: "Сервер" и "Клиент", которые содержат свои собственные, но также и структуру как зависимость (являющуюся модулем Framework.). Я установил проект Framework в свой локальный репозиторий, и оба моих проекта могут увидеть код Framework-Native (иначе говоря, мою собственную логику). ОДНАКО, они, похоже, не могут использовать какую-либо зависимость от проекта Framework. При попытке построить любой из "дочерних" -проектов я получаю следующее:

Invalid POM for de.r2soft.empires.framework:Framework:jar:Alpha-1.2, 
transitive dependencies (if any) will not be available, 
enable debug logging for more details 

Я попытался найти причину этого (или еще лучше решение), но не нашел ничего, что фиксировало мои проблемы. Надеюсь, кто-то здесь может помочь. Моя версия maven, по-видимому, 3.2.1 (что -version говорит мне все равно)

Вот мой framework-pom.xml и client-pom.xml на pastebin:

Рамка: http://pastebin.com/cceZECaT

Клиент: http://pastebin.com/1Cuxve5F

Помощь приветствуется.

4b9b3361

Ответ 1

Одна из причин этого - когда вы полагаетесь на проект, для которого родительский pom устарел. Это часто происходит, если вы обновляете родительский pom без его установки/развертывания.

Чтобы убедиться, что это так, просто запустите с помощью mvn dependency:tree -X и найдите точную ошибку. Он упомянет, что он пропускает то, что вы знаете, в родительском помпе, а не в артефакте, от которого вы зависите (например, версия jar).

Исправление довольно просто: установите родительский pom с помощью mvn install -N и повторите попытку

Ответ 2

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

Ответ 3

Предполагая, что проблемы с клиентами и серверами недействительны из-за неудовлетворенного расширения, тогда должно работать следующее: Если проекты "клиент" и "сервер" имеют зависимость от "Framework", определенных в теге, то вы можно сначала установить "Framework" с помощью опции -N. Сначала, cd в каталог Framework, тогда: mvn -N clean install Опция -N указывает maven только установить корневую помпу в локальное репо и пропустить дочерние модули. Теперь cd для вашего дочернего проекта и повторите команду установки в своем клиентском или серверном модуле. Теперь клиентская или серверная сборка должна найти родительский pom со свойствами, которые ему нужны в локальном репо.

Вы можете получить тот же эффект, создав явную ссылку на путь к файлу, используя тег relativePath в родительском теге child pom:

<parent>
  <relativePath>../my-parent</relativePath>
</parent>

Ответ 4

Удалите папку репозитория внутри .m2 и запустите mvn clean install.

Держите нас в курсе результата и удачи

Ответ 5

У меня такая же проблема, и у меня может быть ответ. У меня есть проект верхнего уровня MyProject и Module1 и Module2. Module2 зависит от Module1, и запись указана как зависимость (по умолчанию). MyProject

<modules>
Module1
Module2
</modules>

mvn dependency:tree из папки MyProject в порядке: module2 зависит от модуля1

MyProject
---
com.acme:Module1:version
---
com.acme:Module2:version
+com.acme:Module1:version

Проблема заключается в том, что я запускаю mvn dependency:tree внутри папки Module2. Затем я получаю сообщение об ошибке:

The POM for com.acme:Module2:version is invalid, 
transitive dependencies (if any) will not be available

После нескольких исследований я обнаружил, что файл pom, созданный/скопированный частью установки сборки как m2/com/acme/myproject/Module1/version/Module1-version.pom, является исходным файлом pom. Этот использует переменные для версий как (дублируется во многих других модулях, не перечисленных здесь) или системный путь (без выбора зависимости от системы). Эти переменные определены в родительском POM файле. Если я заменил все ${} в модуле pom файла на их значения, тогда все будет в порядке. В основном при построении всего значения значения переменных доступны для всех зависимых модулей, так как это один и тот же процесс. Когда вы создаете отдельный модуль, переменные, определенные в родительском POM, недоступны.

Ваш собственный файл pom framework содержит переменную для системного пути net.sf.javaml. Hardcode переменная или найти другое решение, например, спецификацию. https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

Ответ 6

Артефакт Framework, доступный в вашем локальном репозитории, перед запуском install в клиентском проекте, потому что между двумя проектами нет связи (артефакт клиента не является module вашего проекта Framework).

Итак, чтобы решить проблему, вы должны запустить mvn install в своем проекте Framework, чтобы упакованная банка была скопирована в ваш локальный репозиторий. Тогда вам нужно найти maven и найти его, когда вы запускаете фазу maven в проекте клиента.

Чтобы ваши артефакты были распределены между вашей организацией, вы должны развернуть свои артефакты (выгружать) в зеркало размещения хоста.

Ответ 7

У меня была такая же проблема. Я управляю всеми модулями, на которые ссылался проект, который я пытался создать. И выяснилось, что мне пришлось делать "mvn deploy" во всех родительских проектах модуля, которые отображали эту ошибку при использовании в других модулях pom.xml. Вот полное объяснение http://programtalk.com/java/i-used-to-get-this-maven-error-all-time/

Ответ 8

Вы должны отправить вывод в файл журнала с помощью этой команды:

mvn clean install - файл журнала C:\XXXX\Maven\log.txt

откройте log.txt и проанализируйте, какие зависимости не найдены или pom.xml находится в недопустимом состоянии

удалите недопустимый pom и снова запустите mvn clean install

вот и все.

Ответ 9

В моем случае maven повредил одну из транзитивных зависимостей pom (double content), поэтому я просто удалил ее в своей папке m2. Ключ -X помог мне найти определенную сломанную пому.

Ответ 10

Для меня содержимое pom.xml, загружаемое из репозитория в папку .m2, и содержимое файла, когда я открывал, было HTML-содержимым, что и стало причиной того, что я получил это ПРЕДУПРЕЖДЕНИЕ, потому что сайт был перемещен в другое расположение репозитория,

[WARNING] The POM for GROUPID:ARTIFACTID:PACKAGIN:VERSION is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details

Поэтому я изменил содержимое файла 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>GROUPID</groupId>
  <artifactId>ARTIFACTID</artifactId>
  <version>VERSION</version>
  <packaging>PACKAGIN</packaging>
</project>

Теперь, если я запускаю mvn clean install на модуле, который имел вышеуказанную зависимость, предупреждение не будет отображаться. Поэтому проверьте содержимое файла pom.xml.