Как импортировать в Java пакет, созданный пользователем?

Недавно я разместил пакет Maven в реестре пакетов Github и теперь пытаюсь его использовать. Пакет предназначен для предоставления моделей данных, которые используются различными приложениями, что позволяет моей команде вносить изменения в пакет модели данных вместо обновления моделей во всех приложениях Spring, которые их используют.

Я поставил зависимость в свой pom.xml файл приложения, которому требуется пакет модели данных, а затем я запустил mvn install(Мне также пришлось изменить мой файл.m2/settings.xml для доступа к репозиторию). У меня сложилось впечатление, что пакет был установлен, потому что он регистрирует успех и отображается в моем списке зависимостей плагинов maven в среде IDE.

А теперь я застрял. До сих пор я предполагал, что после установки пакета я смогу импортировать нужные мне классы, как и всегда с пакетами Maven. Но когда я пытаюсь это сделать, моя IDE не может найти пакет.

Я снова начал смотреть на пакет модели данных, задаваясь вопросом, есть ли какие-то дополнительные метаданные, которые мне нужно предоставить. В частности, я думаю, что мне может потребоваться предоставить некоторые дескрипторы модуля, но я не могу сказать наверняка, действительно ли это приблизит меня к возможности использовать пакет.

Здесь pom.xml для пакета модели данных.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.companyname</groupId>
    <artifactId>data-model</artifactId>
    <version>0.0.2-SNAPSHOT</version>

    <name>Data-Model</name>

    <properties>
        <java.version>11</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.1.5.RELEASE</version>
        </dependency>
    </dependencies>
</project>

Когда я публикую пакет с Gradle, я получаю такой вывод журнала:

11:05:23 AM: Executing task 'publishGprPublicationToGitHubPackagesRepository'...

Starting Gradle Daemon...
Gradle Daemon started in 1 s 63 ms
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :bootJar UP-TO-DATE
> Task :generateMetadataFileForGprPublication
> Task :generatePomFileForGprPublication
> Task :publishGprPublicationToGitHubPackagesRepository

BUILD SUCCESSFUL in 16s
6 actionable tasks: 3 executed, 3 up-to-date
11:05:39 AM: Task execution finished 'publishGprPublicationToGitHubPackagesRepository'.

Журнал, который печатается, когда я бегу mvn installочень длинный, поэтому я не буду публиковать его, но он не генерирует никаких ошибок, и я вижу, что он загружает jar-файл модели данных и успешно строит. Он также отображается в списке внешних библиотек в каталоге проекта.

Идентификатор группы для модели данных совпадает с идентификатором группы для приложения, в котором я хочу его использовать (название моей компании). Когда я печатаюimport com.companyname.он предлагает некоторые локальные пакеты, но не распознает модель данных. При наведении курсора на красный текст всплывающая подсказка говоритCannot resolve symbol 'datamodel'

Что мне нужно сделать сейчас, чтобы мое приложение могло импортировать классы из созданного мной пакета maven?

1 ответ

Решение

Наконец разобрался в этом.

После небольшой настройки gradle.properties пакета и добавления

<distributionManagement>
   <repository>
     <id>github</id>
     <name>GitHub OWNER Apache Maven Packages</name>
     <url>https://maven.pkg.github.com/OWNER/REPOSITORY</url>
   </repository>
</distributionManagement>

в pom.xml, мне все еще не удалось успешно добавить зависимость в Maven, несмотря на то, что я мог видеть ее в списке. То, что я наконец сделал, чтобы исправить, похоже на возможную ошибку, связанную с IDE, но я не могу сказать наверняка. Я уже пробовал различные комбинации аннулирования кеша и перезапуска IDE, очистки Maven и затем запуска установки, но, наконец, смог заставить пакет работать после того, как я удалил зависимость из моего pom.xml, запустил чистую установку, а затем добавил ее. снова и запустил установку еще раз.

ОБНОВЛЕНИЕ: по какой-то причине он снова сломался и, чтобы снова получить доступ к классам пакета для импорта, мне пришлось (из пакета) запустить mvn clean тогда mvn deploy а затем из зависимого приложения выполните те же шаги, перечисленные выше, и удалите зависимость из pom.xml, а затем повторно запустите mvn install.

Это кажется большой болью, и кажется вероятным, что (если это не ошибка в IntelliJ) я делаю что-то не так.

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

  1. В пакете datamodel запустите mvn clean тогда mvn deploy
  2. В зависимом приложении запустите mvn install
Другие вопросы по тегам