2017-04-23 1 views
0

스프링 부트 앱을 만들고 싶지만 다른 서버로 파일을 많이 옮겨야합니다. 내 "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> 
+0

https://github.com/dsyer/spring-boot-thin-launcher를 참조하십시오. –

+0

"rsync"를 사용하거나 이진 델타 파일을 만드는 것이 좋습니다. 스프링 부트 (Spring Boot) - 하나의 자급 자족 JAR 파일. 또 다른 옵션은 독립 실행 형 Tomcat 서버를 Spring MVC 애플리케이션과 함께 사용하고 Maven에게 JAR 파일에 포함하지 말 것을 명령하는'runtime'으로 일부 의존성을 표시하는 것이다. –

답변

0

추가 "excludeGroupIds"

(내의 하단)과 groupIDs의 쉼표로 구분 된 목록 부팅 받는다는 - 플러그인 - 봄, 그리고 그것은했다. 그것을 핵심 병에서 제거했습니다.

이것은 비표준이므로 SpringBoot의 목적을 상실했기 때문에 수행해서는 안됩니다 (Java Spark2 Framework 또는 좀 더 현대적인 것을 사용하고 별도로 Tomcat을 구성 할 수도 있음) 100MB 이상의 패키지. 그러나 이것은 느린 연결 때문에 여기에 필요했습니다.