Как объединить gradle с maven

#java #maven #gradle

#java #maven #gradle

Вопрос:

Я импортировал проект gradle в свой eclipse. (Я использую Java 11.) У меня были коды, которые используют jakarta.xml библиотеки.

 import jakarta.xml.soap.*;
  

Чтобы он функционировал, я добавил зависимости Maven для jaxws-rt:

 <dependencies>
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-ri</artifactId>
        <version>3.0.0-M3</version>
        <type>pom</type>
    </dependency>
    <dependency>
  <groupId>jakarta.xml.ws</groupId>
  <artifactId>jakarta.xml.ws-api</artifactId>
  <version>2.3.3</version>
</dependency>
  </dependencies>
  

Но когда я пытаюсь сгенерировать сборку, она показывает следующую ошибку:

 error: package jakarta.xml.soap does not exist
import jakarta.xml.soap.*;
  

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

Комментарии:

1. Я не вижу здесь ничего, связанного с Gradle. Вы просто используете Maven и ищете способ добавить зависимость, которая содержит jakarta.xml.soap. Вы уверены, что jakarta.xml.ws-api содержит пакет jakarta.xml.soap?

2. ДА. Потому что код работает, когда зависимости Maven установлены как указано выше. Но мне нужно интегрировать этот фрагмент кода с проектом на основе gradle.

3. Что именно вы подразумеваете под «интегрировать… с проектом на основе gradle»? Ваш проект определен как Gradle project или Maven? Вам просто нужно добавить зависимость к вашему проекту, используя соответствующий синтаксис, вот и все. Я думаю, что вам нужно изучить основы Gradle (или / и Maven) и иметь некоторое базовое представление о том, как работает управление зависимостями

4. Мой проект определен как проект Gradle. Я создал класс java, которому необходимо импортировать библиотеку jakarta.xml.soap. Чтобы запустить это, мне нужно добавить зависимость Maven в gradle. Но это не работает. Не могли бы вы, пожалуйста, предложить мне альтернативу? Кто-то предложил мне не добавлять зависимость maven; вместо этого добавьте следующую зависимость в gradle: « группа компиляции: ‘com.sun.xml.ws ‘, имя: ‘jaxws-ri’, версия: ‘3.0.0-M3’, ext: ‘pom’ группа компиляции: ‘jakarta.xml.ws ‘, название: ‘jakarta.xml.ws-api’, версия: ‘2.3.3’ « Я пробовал, но это не работает. Можете ли вы, пожалуйста, предложить какую-либо лучшую альтернативу?

Ответ №1:

Не управляйте отдельными зависимостями на двух разных платформах сборки.

Вам захочется выбрать либо Maven , либо Gradle . Наличие двух систем сборки приведет к ненужному дублированию работы и по-прежнему требует постоянного обслуживания. Следуя по этому пути, вам потребуется управлять двумя отдельными файлами сборки, которые идентичны по своей природе. Каждая зависимость в вашей конфигурации gradle также должна быть добавлена в вашу конфигурацию maven.

Вместо того, чтобы пытаться создать pom.xml для сборки Maven, вы захотите определить эквивалент Gradle для библиотек, которые вы хотите извлечь.

 compile group: 'com.sun.xml.ws', name: 'jaxws-ri', version: '3.0.0-M3', ext: 'pom'
compile group: 'jakarta.xml.ws', name: 'jakarta.xml.ws-api', version: '2.3.3'
  

Комментарии:

1. Спасибо. Я обновил проект gradle и добавил эти зависимости в build.gradle. Но код по-прежнему показывает ту же ошибку ошибка: пакет jakarta.xml.soap не существует. Есть предложения?

2. Какую версию java вы используете?

3. Я использую Java 11

4. compile group: 'jakarta.xml.bind', name: 'jakarta.xml.bind-api', version: '2.3.3' попробуйте эту библиотеку. JAXB был удален из Java 11, что является причиной ошибки «пакет не существует».

5. Пробовал все три. Все еще не работает. Не удается импортировать библиотеку.