2014-11-13 4 views
7

Я работаю с проектом Java в Intellij IDEA, где у нас много внутренних, автономных зависимостей Maven. У меня есть исходный код для этих зависимостей, импортированных в проект IDEA в качестве модулей, но когда я выбираю Перейти к ->Реализация (и) в классе, который является частью внутренней зависимости Maven (и что у меня также есть импортированный как модуль в моем проекте). Я перешел к декомпилированному представлению класса в зависимости от Maven (jar), а не к файлу исходного кода этого класса, который я импортировал в качестве модуля.Может ли Intellij IDEA автоматически заменять зависимости Maven зависимостями модулей?

Чтобы решить эту проблему, что нужно сделать следующее:

  1. Откройте настройки модуля на модуле с использованием внутренней зависимости Maven
  2. Найти и удалить внутренний модуль Maven в зависимостей списка
  3. Добавить новый Зависимость модуля и затем выбрать импортированный модуль, который соответствует внутренней зависимости от Maven

Есть ли способ, чтобы IDEA выяснял это автоматически или мне нужно снова выполнять эту процедуру вручную?

+0

Я пытался следовать инструкциям в ответах ниже, создав новый пустой проект и импортировать проекты Maven (A -> B) как модули Maven, начиная с проекта A, затем B. Когда это не сработало, я попробовал наоборот, сначала B, затем A, но не повезло. –

+0

Вы когда-нибудь находили решение? – Alden

+0

Комментарий от frant.hartm работал для меня. Мне просто нужно было переименовать все проекты maven с помощью стрелок синего круга. – Carlos

ответ

0

Я бы предположил, что вы неправильно используете intellij в этом примере. Если вы ссылаетесь на ваши зависимости maven как на intellij-модули, они будут запутаны.

Вы должны либо:

  1. Изменение этих зависимостей Maven быть maven modules.
  2. Удалите эти модули intellij как intellij модули и set up your maven build so you can download the source из ваших зависимостей maven.
+0

Спасибо за ваши предложения, но ни одно из этих предложений не решит мою проблему. 1. Внутренние зависимости, на которые я имею в виду, являются автономными проектами Maven (которые ясны в моем вопросе) используются различными проектами, поэтому их невозможно реализовать в подфайлах Maven моего основного проекта Maven. 2. Это, конечно, вариант, но для этого требуется, чтобы мы публиковали баны исходного кода для всех наших внутренних зависимостей, которые могут не всегда быть желательными. –

0

Допустим, у вас есть модуль maven, который имеет модуль B как зависимость. Если вы импортируете оба модуля в один проект IntelliJ, IntelliJ будет автоматически использовать импортированный модуль B вместо артефакта maven из репозитория, но вы должны импортировать его как модуль maven.

Если вы затем запустите некоторый тест или приложение через IntelliJ из модуля A, он будет использовать свои собственные скомпилированные классы из модуля B, а не артефакт maven из репозитория, навигацию в коде и все остальное будет работать должным образом.

Если это не сработает, сообщите об ошибке.

+4

Это не работает для меня. Он будет использовать зависимость Maven (jar) вместо модуля B. –

3

Чтобы добавить еще один проект Maven (который не является частью основного проекта) как зависимость:

  1. открыть вам главный проект
  2. в Maven Projects Window Tool нажмите на зеленую кнопку + и выберите ПОМ.XML из зависимости
  3. повтор 2 в соответствии с требованиями

Источник: https://www.jetbrains.com/idea/help/maven-projects-tool-window.html?search=maven%20project

+0

Если я выберу файл pom.xml другого проекта Maven, я не могу выбрать кнопку OK. –

+2

Это означает, что вы уже добавили этот модуль в качестве зависимости, попробуйте «Reimport All Maven projects» (стрелки синего круга) и посмотрите, можете ли вы перемещаться по источнику. Если он не работает, попробуйте начать с чистого проекта (без каких-либо изменений в настройках модуля). –

Смежные вопросы