#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. Пробовал все три. Все еще не работает. Не удается импортировать библиотеку.