2012-07-19 51 views
2

我正在使用Maven工作並使用maven-replacer插件替換所有縮小版本的css/javascript文件。Maven替換插件,正則表達式不工作

我要取代這個:

<!-- JSMIN js/script.min.js --> 
    <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
    <script src="js/jquery.placeholder.min.js"></script> 
    <script src="js/smoothscroll.js" async=""></script> 
    <script src="js/javascript.js"></script> 
    <script src="js/swfobject.js"></script> 
    <script src="js/player.js"></script> 
<!-- END JSMIN --> 

與此:

<script src="js/script.js"></script> 

類似的CSS的。

該插件說,它已應用正則表達式到我的4個html文件是正確的,但我沒有看到這些文件的變化。

下面是插件

<plugin> 
    <groupId>com.google.code.maven-replacer-plugin</groupId> 
    <artifactId>maven-replacer-plugin</artifactId> 
    <executions> 
     <execution> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>replace</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <basedir>${project.basedir}/src/main/webapp/</basedir> 
     <outputDir>test</outputDir> 
     <includes> 
      <include>**/*.html</include> 
     </includes> 
     <regexFlags> 
      <regexFlag>CASE_INSENSITIVE</regexFlag> 
      <regexFlag>MULTILINE</regexFlag> 
      <regexFlag>DOTALL</regexFlag> 
     </regexFlags> 
     <replacements> 
      <replacement> 
       <token>&lt;!-- JSMIN (.*) --&gt;(.*?(\r))+.*?&lt;!-- END JSMIN --&gt;</token> 
       <value>&lt;script src="$1"&gt;&lt;/script&gt;</value> 
      </replacement> 
      <replacement> 
       <token>&lt;!-- CSSMIN (.*) --&gt;(.*?(\r))+.*?&lt;!-- END CSSMIN --&gt;</token> 
       <value>&lt;link href="$1" rel="stylesheet" type="text/css"/&gt;</value> 
      </replacement> 
     </replacements> 
    </configuration> 
</plugin> 

配置中的正則表達式似乎是正確的,我和我的同事...任何幫助嗎? 在此先感謝

+0

爲什麼不使用yui-compressor插件的任何特定原因(http://alchim.sourceforge.net/yuicompressor-maven-plugin/index.html)? – khmarbaise 2012-07-19 10:31:24

+0

我確實使用另一個插件來縮小零件,但我們需要在包裝階段使用替代品生成一個代碼的2個版本,包含所有鏈接的原始html以及包含縮小文件的部署版本更小的tar.gz,但保持原始代碼完好 – 2012-07-19 10:47:17

回答

6

http://code.google.com/p/maven-replacer-plugin/wiki/UsageWithOtherPlugins

需要有一個掛鉤點爲它們打包成一個戰前的文件運行的替代品。確保你在maven-replacer-plugin之前添加它們,如果它們都在同一階段執行的話(即prepare-package)。確保你使用2.0.1或更低版本的戰爭插件,因爲常用的2.1.0+複製資源兩次,這將覆蓋替換。使用下面的war插件配置來允許在打包之前對文件進行修改。

0

我有複製粘貼在測試pom你的代碼,它工作正常。

你確定你檢查了正確的文件嗎?更新的文件在/ src目錄/主/ web應用/測試

M.

+0

我們已經設法解決了這個問題,因爲我現在無法自動回答,所以我稍後會發布我們的解決方案。基本上我們已經把所有的js/css聲明在html中的一行中,並將正則表達式改爲 <![CDATA [<! - - CSSMIN(。*) - >。* <! - END CSSMIN - >]]> 也許問題在於我們在linux,windows和mac上開發的\ r。無論如何感謝您的幫助 – 2012-07-19 13:34:25