Создание модуля maven в проекте gradle
Есть проект c тестами, в котором используется Gradle (условно - projectGradle). Требовалось создать в этом проекте модуль, но Maven (условно - projectMaven). Зависимый проект использует классы из основного, если подключать зависимость в настройках проекта (в идее) - то классы видимы и их можно использовать. Если же попробовать собрать этот зависимый модуль, то получаем ошибки, что классы из основного проекта не существуют. Что и где нужно прописать, чтобы не только идея, но и компилятор видел и собирал эти классы в зависимый проект?
Что было сделано: В settings.gradle (находится в projectGradle) прописана строчка import 'projectMaven' В pom.xml (в projectMaven) были попытки прописать теги parent и dependency, содержащие данные о projectGradle, после чего строчки просто загорались красным с сообщением "Dependency '....:projectGradle:1.1-SNAPSHOT' not found". Из чего могу сделать вывод, что он пытается искать такую библиотеку в Maven-репе. Следуя инструкции тут, я создавала pom.xml в projectGradle, прописывала туда тег module projectMaven. Так как основной проект - тесты, и там есть "подмодули" main и test, я даже пыталась в модуле main создать pom.xml (ведь зависимость именно от main мне нужна).
Ничего из того, что я нашла/знала/предполагала не сработало.
Ответы (1 шт):
Чтобы добавить зависимость на maven-проект для вашего gradle-проекта, можно воспользоваться возможностью публикации артефактов в локальный maven-репозиторий.
Создаем проект на maven, указываем в нем координаты артефакта (группа артефакта, имя и версия), например:
<groupId>org.example</groupId> <artifactId>projectMaven</artifactId> <version>1.0</version>Выполняем установку артефакта в локальный maven-репозиторий. Для этого в терминале выполните команду
mvn install. Если пользуетесь IDE, то найдите эту функцию в вашей IDE.Во втором проекте, который на gradle, указываем репозиторий
mavenLocalи прописываем зависимость на maven-артефакт:repositories { ... mavenLocal() } dependencies { ... implementation('org.example:projectMaven:1.0') }
Теперь, после пересборки gradle-проекта, вам будут доступны классы из maven-проекта.
Если остались вопросы, то ознакомтесь с демо-проектом.