Извлечение общего кода из существующих сервисов весенней загрузки и повторное использование кода с использованием подмодулей maven и git - PullRequest
0 голосов
/ 13 апреля 2020

Так что я работаю над кучей микросервисов на основе весенней загрузки. Дело в том, что все эти сервисы имеют одинаковый код подтверждения пользователя, один и тот же совет обработчика исключений, одинаковое ведение журнала на основе AOP и т. Д. c Теперь я хочу извлечь этот код в отдельный репозиторий и использовать этот код с каждым из сервисов в качестве их компонента (и я хочу иметь возможность редактировать этот код с помощью кода сервиса, в который я буду добавлять его). По сути, когда я создаю код этого сервиса, я должен быть в состоянии построить и тот общий проект кода, который будет присутствовать в качестве подкаталога в каждом из сервисов. Визуально моя текущая ситуация такова:

   service A (present in its own repo,contains common code)
   pom.xml

   service B (present in its own repo,contains common code)
   pom.xml

  ....etc.

То, чего я хочу достичь, это:

   service A
      \-----pom.xml
       \----src\main\java\com\company\project\sub-directory A
        \----src\main\java\com\company\project\sub-directory B
         .....
         \----src\main\java\com\company\project\sub-directory common (common code extracted, will be a spring boot project)

Аналогично для службы B. Теперь я попробовал несколько подходов до сих пор и имею пока не нашел решения. Самым многообещающим, что я подумал, было следующее:

  1. Разделите общий код в новый репозиторий.
  2. Превратите каждую из служб в pom упаковку вместо текущей jar
  3. Добавьте общий код в виде подмодуля git, куда бы я ни захотел в проекте, в качестве подкаталога и также включите его в pom.xml каждой из служб как
<modules>
    <module>path-to-sub-module</module>
</modules>

Кроме того, общий проект не будет иметь какого-либо определенного c родительского элемента, такого как служба A или служба B. Это будет простой весенний проект загрузки с родителем как spring-boot-starter-parent. Поэтому я попробовал это, и после выполнения вышеизложенного, когда у меня есть общий проект в качестве подкаталога, возникает много ошибок компиляции, потому что структура пакета для общего проекта теперь изменилась. Если каждая из моделей была в пакете, скажите:

package com.project.poc.models;

сейчас выдают ошибку, говоря, что это не правильный пакет и это правильно, что должно быть

package com.project.poc.common.src.main.java.com.project.poc.models;

Все, что я можно с этим поделать? или есть что-то еще, что-то лучшее, что вы, ребята, можете предложить, чтобы я мог выполнить мое требование?

Спасибо

...