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 폴더에 있어야 합니다.여기에는 몇 가지 방법을 사용할 수 있습니다.
- 파일을 수동으로 가져와 관련 장소에 저장할 수 있습니다(권장하지 않음).콘솔을 통해 설치하는 경우에도 동일한 프로세스를 수행할 수 있습니다.
- 관련 리모트 URL은 .pom 파일의 의존관계에 기입되어 사용되는 IDE에서 Intelij가 갱신(검증)되면 자동으로 s2 폴더에 격납됩니다.
- 중앙 저장소를 통해 .pom 파일의 종속성에 대처하는 방법으로 동일한 프로세스를 수행할 수 있습니다.
주의:SpringBot의 관련 jar 작업을 위해 ComponentScan을 잊어서는 안 됩니다.
언급URL : https://stackoverflow.com/questions/30207842/add-external-library-jar-to-spring-boot-jar-internal-lib
'sourcetip' 카테고리의 다른 글
스프링 테스트에서 @EnableScheduling 비활성화 (0) | 2023.03.29 |
---|---|
MVC vs. 플럭스 ? 양방향 vs.단방향? (0) | 2023.03.29 |
React.render() 함수에 여러 개의 React 컴포넌트를 렌더링하는 방법이 있습니까? (0) | 2023.03.29 |
Chrome 개발자 도구에서 AJAX 응답 컨텐츠를 보시겠습니까? (0) | 2023.03.29 |
웹에서 어셈블리 노드의 목적은 무엇입니까?설정? (0) | 2023.03.29 |