Создание модуля maven в проекте gradle

Рейтинг: -1Ответов: 1Опубликовано: 13.03.2023

Есть проект 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 мне нужна).

Ничего из того, что я нашла/знала/предполагала не сработало.

Ответы

▲ 0Принят

Чтобы добавить зависимость на maven-проект для вашего gradle-проекта, можно воспользоваться возможностью публикации артефактов в локальный maven-репозиторий.

  1. Создаем проект на maven, указываем в нем координаты артефакта (группа артефакта, имя и версия), например:

    <groupId>org.example</groupId>
    <artifactId>projectMaven</artifactId>
    <version>1.0</version>
    
  2. Выполняем установку артефакта в локальный maven-репозиторий. Для этого в терминале выполните команду mvn install. Если пользуетесь IDE, то найдите эту функцию в вашей IDE.

  3. Во втором проекте, который на gradle, указываем репозиторий mavenLocal и прописываем зависимость на maven-артефакт:

    repositories {
        ...
        mavenLocal()
    }
    
    dependencies {
        ...
        implementation('org.example:projectMaven:1.0')
    }
    

Теперь, после пересборки gradle-проекта, вам будут доступны классы из maven-проекта.

Если остались вопросы, то ознакомтесь с демо-проектом.