이후 Tomcat 시작 시 종속성 패키지 경로를 지정하는 것이 편리합니다.
<!--拷贝依赖到jar外面的lib目录--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <!--指定的依赖路径--> <outputDirectory> ${project.build.directory}/lib </outputDirectory> </configuration> </execution> </executions> </plugin>
디렉토리 구조 이 플러그인을 사용하여 빌드한 후 종속 jar 패키지를 포함하는 추가 lib 디렉터리(즉, 위에서 구성한 outputDirectory에 의해 지정된 경로)가 있습니다.
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <executable>true</executable> <layout>ZIP</layout> <mainClass> com.iasp.BasicStarter </mainClass> <!--只包含自己--> <includes> <include> <groupId>${groupId}</groupId> <artifactId>${artifactId}</artifactId> </include> <!--或者--> <!--依赖jar不打进项目jar包中--> <!--<include> <groupId>nothing</groupId> <artifactId>nothing</artifactId> </include>--> </includes> <!--不包含哪些--> <!--<excludeGroupIds>--> <!--com.hundsun.jrescloud,--> <!--org.springframework.boot,--> <!--org.springframework--> <!--</excludeGroupIds>--> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
위의 패키징을 구성한 후 해당 jar 패키지가 제외되어 플러그인으로 만든 flat jar 패키지의 크기가 작아져서 업로드가 더 쉬워집니다. 게시용 서버는 다음과 같습니다. BOOT-INF 디렉토리 아래의 lib 디렉토리는 다음과 같습니다.
원래 유형 jar 패키지의 구조는
그런 다음 jar 패키지 경로를 지정합니다. 프로젝트 시작 시 .path="../lib", 슬리밍 효과를 얻기 위해 종속성은 D:develop/shared/에 배치됩니다. fjar 디렉터리에서 실행 명령
java -Dloader.path="D:develop/shared/fjar" -jar mytest.jar
을 실행하세요. 참고: 또 다른 시작 해결책은 -Dloader.path="D:develop/shared/fjar"를 추가하지 않고 경로를 지정하고 다음 명령을 직접 사용하여 시작
java -jar mytest.jar
위 시작을 사용하는 것입니다. 그렇다면 maven-jar-plugin을 추가해야 합니다. 또한 실행 가능한 jar를 읽는 일부 파일을 처리할 때 패키징 작업을 위해 maven-jar-plugin 플러그인을 사용할 수 있습니다.
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <!--addClasspath表示需要加入到类构建路径--> <addClasspath>true</addClasspath> <!--classpathPrefix指定生成的Manifest文件中Class-Path依赖lib前面都加上路径,构建出lib/xx.jar--> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.common.util.CommonUtilsApplication</mainClass> </manifest> </archive> </configuration> </plugin>
위 플러그인의 효과는 클래스 경로에 해당하는 jar를 패키지의 META_INF 디렉터리 아래 MANIFEST.MF 파일에 추가하여 애플리케이션이 처음 시작될 때 필요한 버전 종속성만 적용되도록 하는 것입니다. Class-Path에 따라 로드됩니다(공유 디렉토리에서 다중 버전 로드 참조 충돌 문제를 해결하기 위해). 이 효과는 -classpath xxx(특정 jar) 매개변수를 추가하는 것과 동일합니다.
이때, 실행할 xxx.jar과 동일한 디렉터리에 필요한 jar 디렉터리를 넣으면 됩니다. lib 디렉터리와 xxx.jar이 실행될 경우에는 -Dloader.path 매개변수를 추가할 수 없습니다. run are not in 동일한 레벨 디렉토리인 경우 다음과 같이 -Dloader.path를 사용하여
을 시작해야 합니다. 동일한 레벨 디렉토리에서 시작
동일한 레벨 디렉토리에서 시작하지 않음:
여기서 -Dloader.path는 여러 디렉터리를 지정할 수 있으므로 여러 마이크로서비스가 있는 경우 공개적으로 사용되는 일부 jar는 공유 디렉터리에 배치할 수 있고 각 마이크로서비스에 고유한 jar는 마이크로서비스의 개인 디렉터리에 배치할 수 있습니다. (jar 버전 충돌 문제 해결) 예는 다음과 같습니다.
참고:
여러 마이크로서비스의 슬리밍 패키징의 경우 spring-boot-maven-plugin 패키징으로 인해 발생하는 일부 애플리케이션 시작 문제를 방지하기 위해 maven-jar-plugin 패키징을 사용하는 것이 좋습니다. 메커니즘(트랩됨)
예를 들어 프로젝트 A는 Y 라이브러리 버전 1.0에 종속되고 프로젝트 B는 Y 라이브러리 버전 2.0에 종속됩니다. 그러면 버전 종속성 충돌이 발생할 수 있습니다. (두 버전이 호환되지 않는 경우) 해결 방법:
2.1 버전이 일치하는 한 동일한 버전을 계속 사용하여 버전의 일관성을 유지하세요. 처리를 위해 Maven의 버전 종속성 관리를 사용할 수 있습니다. 즉, 상위 pom 파일에서
2.2 프로젝트가 필요한 버전에 종속되도록 하고 이를 war 패키지에 추가합니다. 동일한 버전의 다른 jar 패키지를 동일한 공유 패키지에 넣습니다.
테스트를 통해 검색 시 종속성이 위에서 아래로 검색되는 것을 확인했습니다. 일치하는 경우 아래와 같이 첫 번째 항목인 comm-0.0을 사용합니다. 1.jar 버전이 사용됩니다
참고:
spring-boot-maven-plugin 플러그인을 사용하면 모든 종속 jar 패키지가 패키징되므로 생성된 JAR 패키지를 직접 실행할 수 있습니다. 개발 운영을 단순화합니다.
使用spring-boot-maven-plugin插件如果不指定程序主运行入口类的话默认为Main-Class: org.springframework.boot.loader.JarLauncher
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.9.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <!-- The main class to start by executing java -jar --> <start-class>ccom.notes.JavaNotesApplication</start-class> </properties>
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.1.9.RELEASE</version> <configuration> <mainClass>com.notes.JavaNotesApplication</mainClass> <layout>ZIP</layout> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <useUniqueVersions>false</useUniqueVersions> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.notes.JavaNotesApplication</mainClass> </manifest> <manifestEntries> <version>${project.version}</version> </manifestEntries> </archive> </configuration> </plugin>
위 내용은 springboot 패키징 플러그인을 사용하여 jar 패키지를 제거하고 슬림하게 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!