sourcetip

Spring boot .jar internal /lib에 외부 라이브러리 .jar를 추가합니다.

fileupload 2023. 3. 29. 21:47
반응형

Spring boot .jar internal /lib에 외부 라이브러리 .jar를 추가합니다.

하여 공용 외부 .pom.은 pom.xml입니다.sqljdbc41.jar.

IDE에서 로컬로 프로젝트를 실행할 수 있으며 모든 것이 작동합니다.다음과 같이 라이브러리를 다운로드한 후 참조했습니다.

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc41</artifactId>
    <version>4.1</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/sqljdbc41.jar</systemPath>
</dependency>

★★★★★★★★★★★★★★★를 실행했을 때,mvn clean package하지 않음을 .jar 파일을 만들고 생성된 .jar를 실행하려고 하면 SQL Server 참조가 유효하지 않음을 나타내는 오류가 팝업됩니다. 다음 이"Da" " .jar" "에서 되고 있는 이 들어 있습니다.pom.xml파일이 올바르게 다운로드되고 추가되지만 SQL Server는 다운로드되지 않습니다.

를수 .sqljdbc41.jar 최적이 아닌 것.jar로 컴파일된 후 /lib 폴더로 이동합니다.이 폴더는 동작합니다만, 최적이 아닌 것 같습니다.떤떤접 근근 ??? ???


폴더로 으로 * Winrar.jar를 합니다.sqljdbc41.jar파일 왼쪽 하단에 있는 압축 옵션(Winrar에서 제공하는 압축 옵션)을 선택하십시오. Google에서 이 옵션을 찾았지만 아무도 응답하지 않은 경우입니다.

include SystemScope'를 true로 설정할 수 있습니다.

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
    <includeSystemScope>true</includeSystemScope>
  </configuration>
</plugin>

로컬 저장소에 sqljdbc41.jar를 설치할 수 있습니다.

mvn install:install-file -Dfile=path/to/sqljdbc41.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc41 -Dversion=4.1 -Dpackaging=jar

다음으로 의존관계를 표준 의존관계로 선언합니다.

<dependency>
   <groupId>com.microsoft.sqlserver</groupId>
   <artifactId>sqljdbc41</artifactId>
   <version>4.1</version>
</dependency>

원격 아티팩트 저장소(nexus, archiva...)를 사용하는 경우 이 저장소에 아티팩트도 배포해야 합니다.자세한 것은, https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html 를 참조해 주세요.

또는 resources/lib/xxx.jar 등의 Resources 폴더에 저장하고 pom.xml을 다음과 같이 설정할 수 있습니다.

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc41</artifactId>
    <version>4.1</version>
    <scope>system</scope>
    <systemPath>${basedir}/src/main/resources/lib/sqljdbc41.jar</systemPath>
</dependency>

스프링 부트 시: 저도 같은 문제에 직면했습니다.아래의 코드가 도움이 되었습니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.5.7.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <includeSystemScope>true</includeSystemScope>
            </configuration>
        </plugin>
    </plugins>
</build>

효과가 있습니다.

project {root folder}/libs/ojdbc-11.2.0.3.jar

pom.xml:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc</artifactId>
    <version>11.2.0.3</version>
    <scope>system</scope>
    <systemPath>${basedir}/libs/ojdbc-11.2.0.3.jar</systemPath>
</dependency>
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <includeSystemScope>true</includeSystemScope>
    </configuration>
</plugin>

내 경우 태그에 "dot"이 없는 버전 번호를 제공하는 것이 장애입니다.

<dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <scope>system</scope>
    <version>1</version>
    <systemPath>${basedir}/src/main/resources/lib/tools.jar</systemPath>
</dependency>

이 기능은 다음과 같습니다.

<dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <scope>system</scope>
    <version>1.8</version>
    <systemPath>${basedir}/src/main/resources/lib/tools.jar</systemPath>
</dependency>

Spring-Boot 프로젝트를 maven 또는 gradle 플러그인과 함께 사용하는 경우 기본적으로 응용 프로그램을 실행 가능한 jar로 패키징합니다.이러한 실행 가능 자르는 BOOT-INF/classes 폴더에 클래스를 추가하기 때문에 다른 Spring-Boot 프로젝트에서 종속성으로 사용할 수 없습니다.즉, 종속성 jar는 다음과 같은 클래스 경로 구조를 가지므로 실행 가능한 jar를 종속성으로 사용할 때 이러한 jar를 찾을 수 없습니다.

여기에 이미지 설명 입력

프로젝트 A를 프로젝트 B의 maven 종속성으로 사용하려면 두 개의 아티팩트가 있어야 합니다.종속성으로 사용할 수 있는 아티팩트와 실행 가능한 아티팩트를 생성하려면 분류자를 지정해야 합니다.이 분류자는 실행 가능한 아카이브의 이름에 적용되며 기본 아카이브는 종속성으로 사용됩니다.Maven에서 exec 분류자를 설정하려면 다음 설정을 사용합니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <classifier>exec</classifier>
            </configuration>
        </plugin>
    </plugins>
</build>

그래서 MAJIC WORD는<classifier>exec</classifier>이렇게 하면 다음과 같은 jar 구조가 생성되고 spring-boot 프로젝트에 의해 클래스 경로의 maven 의존성 jar로 쉽게 통합될 수 있습니다.

여기에 이미지 설명 입력

상기 플러그인은 프로젝트 B에서 종속적으로 사용될 프로젝트 A pom에 추가해야 합니다.스프링 문서 섹션 16.5에도 동일하게 설명되어 있습니다.

로컬 저장소를 통해 작업하려면 작업하는 대상 .jar 파일이 s2 폴더에 있어야 합니다.여기에는 몇 가지 방법을 사용할 수 있습니다.

  1. 파일을 수동으로 가져와 관련 장소에 저장할 수 있습니다(권장하지 않음).콘솔을 통해 설치하는 경우에도 동일한 프로세스를 수행할 수 있습니다.
  2. 관련 리모트 URL은 .pom 파일의 의존관계에 기입되어 사용되는 IDE에서 Intelij가 갱신(검증)되면 자동으로 s2 폴더에 격납됩니다.
  3. 중앙 저장소를 통해 .pom 파일의 종속성에 대처하는 방법으로 동일한 프로세스를 수행할 수 있습니다.

주의:SpringBot의 관련 jar 작업을 위해 ComponentScan을 잊어서는 안 됩니다.

언급URL : https://stackoverflow.com/questions/30207842/add-external-library-jar-to-spring-boot-jar-internal-lib

반응형