[英]Does Maven support negative lookbehind regex in <packagingExcludes/>
我有以下正則表達式:
.*(?<!min)(\.css)
這意味着要匹配所有未縮小的CSS文件。 在Java regex測試器上測試該regex時可以使用。 但是,當與Maven WAR插件的<packagingExcludes/>
配置參數一起使用時,它不起作用。 我使用它如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<packagingExcludes>
<![CDATA[
%regex[.*(?<!min)(\.css)]
]]>
</packagingExcludes>
</configuration>
</plugin>
Maven WAR插件是否支持負向后正則表達式? 如果是這樣,我該如何使用它。
您不需要CDATA。 用這個:
<packagingExcludes>
%regex[.*(?<!min)(\.css)]>
</packagingExcludes>
'<' is equal to the sign '<'
如果可以通過不帶任何CSS文件的命名來避免這種情況.
除了擴展名( .css
或.min.css
) 以外的字符,那么您不需要在.min.css
否定的眼神; 這將做:
^[^.]+\.css$
(我不記得是否需要錨。我已經把它們放進去了。)
否則,是否支持負向后看取決於所使用的RE庫。 Java的內置功能確實支持該功能(因為它是PCRE派生的),但其他一些功能則不支持。 考慮到Java確實支持它,至少有合理的機會它會起作用。
嘗試而不是花時間去猜測就足夠了。
我之前刪除的答案是錯誤的。
實際的問題是您的XML中太多了。 在最后一行,您只需要兩個右括號,而不是三個( ]]>
而不是]]]>
)
在我的計算機上對其進行測試時,該方法工作正常:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<packagingExcludes>
<![CDATA[
%regex[.*(?<!min)(\.css)]
]]>
</packagingExcludes>
</configuration>
</plugin>
我正在使用Apache Maven 3.0.3 (r1075438; 2011-03-01 01:31:09+0800)
和插件版本2.4
。 我嘗試同時使用jdk1.6.0_65和jdk1.8 beta並獲得相同的結果。 我在上面的問題中更新的插件聲明得到的結果相同。
我有一個幾乎是空的戰爭項目,在src/main/webapp
文件夾中只有兩個文件: my.css
和my-min.css
。
我運行的命令是mvn clean install && jar tvf target/testweb-0.1.war
(項目和工件mvn clean install && jar tvf target/testweb-0.1.war
稱為testweb
)
輸出為:
META-INF/
META-INF/MANIFEST.MF
WEB-INF/
WEB-INF/classes/
my-min.css
WEB-INF/web.xml
META-INF/maven/testweb/testweb/pom.xml
META-INF/maven/testweb/testweb/pom.properties
因此它不包括my.css
但包括my-min.css
。
您的項目結構是什么樣的?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.