스프링 부트 앱을 만들고 싶지만 다른 서버로 파일을 많이 옮겨야합니다. 내 "jar"파일 안에있는 "libs"폴더는 너무 크다. 100MB ++입니다.거대한 100MB jar 파일 압축 (봄 부팅 메이븐 플러그인)
내가 원하는 것은 1MB 또는 그와 비슷한 webapp을 주기적으로 업데이트하고 다른 서버의 출력 디렉토리에 내 100MB "libs"폴더의 사본을 보관하는 것입니다. libs 업데이트는 거의 없습니다.
다음 POM 파일은 100MB JAR을 만든 다음 100MB "libs"폴더를 만듭니다. 그런 다음 두 개를 하나로 합칩니다. 하지만 나는 100MBJAR을 더 작게 만드는 법을 모릅니다 (함께 컴파일하기 위해서는 springboot 라이브러리가 가장 중요합니까?). 나는 <include>
태그가 필요하다고 생각합니다.
하지만 그것은 단지 임베디드 SpringBoot & 톰캣에서 가장 중요한 파일이 포함 그래서 "봄 부팅 받는다는 플러그인"구성하는 올바른 방법을 찾았지만, 다른 폴더에 외부의 다른 라이브러리의 대부분을 유지하지 않은 . pom.xml 파일
<build>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<excludes>
<exclude>node_modules/**</exclude>
<exclude>bower_components/**</exclude>
<exclude>node/**</exclude>
</excludes>
</resource>
<resource>
<directory>${project.build.directory}/generated-resources</directory>
</resource>
</resources>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<projectNameTemplate>[groupId].[artifactId]</projectNameTemplate>
</configuration>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/${project.build.finalName}.lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>${project.build.finalName}.lib/</classpathPrefix>
<mainClass>${fully.qualified.main.class}</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>antrun-archive</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<property name="final.name" value="${project.build.directory}/${project.build.finalName}"/>
<property name="archive.includes" value="${project.build.finalName}.${project.packaging} ${project.build.finalName}.lib/*"/>
<property name="tar.destfile" value="${final.name}.tar"/>
<!-- <zip basedir="${project.build.directory}" destfile="${final.name}.zip" includes="${archive.includes}" /> -->
<tar basedir="${project.build.directory}" destfile="${tar.destfile}" includes="${archive.includes}" />
<gzip src="${tar.destfile}" destfile="${tar.destfile}.gz" />
<!-- <bzip2 src="${tar.destfile}" destfile="${tar.destfile}.bz2" /> -->
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
https://github.com/dsyer/spring-boot-thin-launcher를 참조하십시오. –
"rsync"를 사용하거나 이진 델타 파일을 만드는 것이 좋습니다. 스프링 부트 (Spring Boot) - 하나의 자급 자족 JAR 파일. 또 다른 옵션은 독립 실행 형 Tomcat 서버를 Spring MVC 애플리케이션과 함께 사용하고 Maven에게 JAR 파일에 포함하지 말 것을 명령하는'runtime'으로 일부 의존성을 표시하는 것이다. –