2017-04-23 90 views
0

我想構建我的spring啓動應用程序,但我必須將文件轉移到不同的服務器。但是我的「jar」文件中的「libs」文件夾現在太大了。它是100MB ++。收縮我的巨大的100MB jar文件(spring boot maven插件)

我想要的是定期更新我的webapp,就像1MB或其他東西,並保存在不同服務器的輸出目錄上的100MB「libs」文件夾的副本。只是很少更新庫。

下面的POM文件會生成一個100MB的JAR文件...然後生成100MB的「libs」文件夾。然後將兩者拉到一起。但我不知道如何使100MBJAR變小(哪一個彈簧引導庫最重要一起編譯?)。我想我需要一個<include>標籤或其他東西。

但我還沒有找到合適的方式來配置「春天啓動Maven插件」,使其只包括SpringBoot & Tomcat的嵌入式最重要的文件,但保留最外面的其他庫在不同的文件夾。

的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文件中。 –

回答

0

增加了「excludeGroupIds」(我的底部)到春季啓動 - Maven的插件和組ID的逗號分隔的列表,和它的工作。將它從核心瓶中取出。

請記住這是非標準的,不應該由於它違背了SpringBoot的目的(因此不妨使用Java Spark2 Framework或更現代的東西,然後分別配置Tomcat),或者僅僅發送超過100MB的軟件包。但由於連接速度緩慢,因此這是必要的。

相關問題