#java #spring #spring-boot
#java #весна #spring-загрузка
Вопрос:
Я использую проект Spring boot 2, который создает jar (и публикует его как артефакт), но классы находятся в «BOOT-INF / classes». Когда я включаю эту зависимость в другой проект, он выдает «пакет com.native.ultra.repo.aspect не существует».
Я попытался: а) присвоить классификацию как <classifier>exec</classifier>
б) попытался использовать <layout>MODULE</layout>
, который не поддерживается в Spring boot 2.
Дайте мне знать, что я должен изменить в pom основного сервиса, чтобы он мог получить доступ к классам в «BOOT-INF / classes». Есть какое-то решение для включения каждого класса в путь к классу, нужна помощь, что здесь делать.
1. Служба репозитория jar: — Содержит общий тип кода и утилит, которые должны быть опубликованы как артефакты и импортированы как jar для других проектов.
pom.xml (службы репозитария) :
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.native.ultra</groupId>
<artifactId>repo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Repo Service Parent POM</name>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<release>${java.version}</release>
</configuration>
</plugin>
</plugins>
</build>
2. Основная служба — я импортирую зависимость службы репозитория здесь и хочу получить доступ к служебным классам, но при ее сборке (чистая установка mvn) происходит сбой с сообщением «пакет не существует»
pom.xml (основного обслуживания) :
<dependency>
<groupId>com.native.ultra</groupId>
<artifactId>repo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave</artifactId>
<version>5.12.6</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>ultra-snapshot-local</id>
<url>https://artifacts.native.com/ultra-snapshot-local</url>
<snapshots/>
<releases>
<enabled>false</enabled>
</releases>
</repository>
Комментарии:
1. Вы не можете включить Spring Boot jar в качестве зависимости в другой проект из-за другой структуры (необходимой для fat-jar с зависимостями). Если это всего лишь зависимость, просто создайте обычный jar вместо того, чтобы позволить spring boot создать его, если вы хотите использовать зависимость и быть spring boot jar, настройте плагин spring boot для генерации 2 артефактов. Все это объясняется в официальной документации
2. @M.Deinum, я использовал репозиторий (jar) для создания идентификатора трассировки / идентификатора диапазона, регистратора через аспект, поэтому использовал Spring boot. Дайте мне знать, возможно ли это без весенней загрузки, или я должен создавать не jar, а проект зависимостей?