簡體   English   中英

Maven是否在中支持負向后正則表達式<packagingExcludes/>

[英]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[.*(?&lt;!min)(\.css)]>
</packagingExcludes>


'&lt;' 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.cssmy-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM