2016-01-13 110 views
9

我將使用maven依賴項com.samaxes.maven#minify-maven-plugin來縮小我的前端項目。這個前端項目打包成一個jar(java歸檔) - 所以我沒有war文件,因爲我使用了Spring引導。將縮小文件放入罐中

使用底部的配置* .min.js和* .min.css文件生成,但它們不會陷入jar文件。我已經閱讀了一些線程,並嘗試了一些東西,但沒有成功:在JAR文件中,仍然存在unminified的css和js文件。

有沒有人有任何提示我可以做什麼。我的項目中有很多css和js文件在不同的文件夾結構中,並且縮小的文件應該放在與未修剪的文件相同的位置。

<build> 
<plugins> 
    <plugin> 
    <groupId>com.samaxes.maven</groupId> 
    <artifactId>minify-maven-plugin</artifactId> 
    <version>1.7.4</version> 
    <executions> 
     <execution> 
     <id>default-minify</id> 
     <phase>package</phase> 
     <configuration> 
      <charset>UTF-8</charset> 
      <skipMerge>true</skipMerge> 
      <nosuffix>true</nosuffix> 
      <closureCompilationLevel>WHITESPACE_ONLY</closureCompilationLevel> 
      <webappSourceDir>src/main/resources</webappSourceDir> 
      <cssSourceDir>./</cssSourceDir> 
      <cssTargetDir>./minified</cssTargetDir> 
      <cssSourceIncludes> 
      <cssSourceInclude>**/*.css</cssSourceInclude> 
      </cssSourceIncludes> 
      <cssSourceExcludes> 
      <cssSourceExclude>**/*.min.css</cssSourceExclude> 
      </cssSourceExcludes> 
      <jsSourceIncludes> 
      <jsSourceInclude>**/*.js</jsSourceInclude> 
      </jsSourceIncludes> 
      <jsSourceExcludes> 
      <jsSourceExclude>**/*.min.js</jsSourceExclude> 
      </jsSourceExcludes> 
      <jsEngine>CLOSURE</jsEngine> 
     </configuration> 
     <goals> 
      <goal>minify</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 

[編輯]

我有編輯Maven插件這種方式。 我真的必須使用src/main/recoures - 它是我們項目的規範。現在

我的問題是,在不同的文件夾中的文件的Unter的主文件夾路徑公共/應用是精縮下,但縮小的文件的文件夾處於同一級別比我公共文件夾。

所以,我需要這樣的:

<webappTargetDir>**public/app/**${project.build.outputDirectory}</webappTargetDir> 

是否有可能做這樣的嗎?

<build> 
<plugins> 
    <plugin> 
    <groupId>com.samaxes.maven</groupId> 
    <artifactId>minify-maven-plugin</artifactId> 
    <version>1.7.4</version> 
    <executions> 
     <execution> 
     <id>default-minify</id> 
     <phase>prepare-package</phase><!-- When omitted defaults to 'process-resources' --> 
     <configuration> 
      <charset>UTF-8</charset> 
      <skipMerge>true</skipMerge> 
      <closureCompilationLevel>WHITESPACE_ONLY</closureCompilationLevel> 
      <webappSourceDir>src/main/resources/public/app</webappSourceDir> 
      <webappTargetDir>${project.build.outputDirectory}</webappTargetDir> 
      <cssSourceDir>./</cssSourceDir> 
      <cssSourceIncludes> 
      <cssSourceInclude>**/*.css</cssSourceInclude> 
      </cssSourceIncludes> 
      <jsSourceDir>./</jsSourceDir> 
      <jsSourceIncludes> 
      <jsSourceInclude>**/*.js</jsSourceInclude> 
      </jsSourceIncludes> 
      <jsEngine>CLOSURE</jsEngine> 
     </configuration> 
     <goals> 
      <goal>minify</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

隨着縮小,Maven的插件配置上面,我得到以下文件夾結構在左側,但我需要的文件夾結構的分辯側。有沒有可能做到這一點?

Current and needed folder structure

+0

首先,你應該縮小插件的相變化'準備,package'此外,你不應該使用'src/main/resources'並將'webappTargetDir'改爲'$ {project.build.outputDirectory}'(target/classes文件夾)......如果使用複製的src/main/resources'文件夾在資源階段進入'目標/類'這是不是真的想要什麼.... – khmarbaise

+0

感謝您的反饋。有沒有可能將縮小的文件放在原始文件路徑的位置?非常感謝! – quma

+1

如果您嘗試使用 $ {project.build.outputDirectory}/public/app',該怎麼辦? – Tunaki

回答

8

中的文件複製相對從webappSourceDirwebappTargetDir。所以如果你想要結構匹配,你應該使用類似的模式。含義,應該是

<webappSourceDir>src/main/resources</webappSourceDir> 
<webappTargetDir>${project.build.outputDirectory}</webappTargetDir> 

<webappSourceDir>src/main/resources/public/app</webappSourceDir> 
<webappTargetDir>${project.build.outputDirectory}/public/app</webappTargetDir> 

我COMMITED工作實例here

+0

非常感謝!我還有一個問題。如何防止將未縮小的文件打包到罐子中。 – quma

+0

如果它們具有相同的名稱,則它們將由縮小器重寫。如果它們具有不同的名稱,則必須使用通常的資源排除機制排除它們:https://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html。 –