Как получить доступ к классам в «BOOT-INF / classes» jar

#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, а проект зависимостей?