2016-01-05 7 views
5

मैं के रूप में एक निर्देशिका संरचना है:Maven युद्ध प्लगइन: सभी निर्देशिकाओं को निकालने लेकिन एक

screenshot

src 
|__ main 
    |__ java 
    |__ resources 
    |__ webapp 
     |__ css_blue 
     |__ css_green 
     |__ css_red 
     |__ WEB-INF 

जहां सीएसएस के तीन अलग निर्देशिका देखते हैं (css_red, css_green, css_blue के रूप में)। यहाँ, मैं उनमें से केवल एक के रूप में -D स्विच के आधार पर शामिल करना चाहते हैं:

mvn clean install -Dcss=green 

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.faisal.dwr</groupId> 
    <artifactId>chatbox</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- Spring - MVC --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.2.4.RELEASE</version> 
    </dependency> 
    <!-- Spring Web Security --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>4.0.3.RELEASE</version> 
    </dependency> 
    <!-- Spring Security Config --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>4.0.3.RELEASE</version> 
    </dependency> 
    <!-- DWR --> 
    <dependency> 
     <groupId>org.directwebremoting</groupId> 
     <artifactId>dwr</artifactId> 
     <version>3.0.0-RELEASE</version> 
    </dependency> 
    </dependencies> 

    <build> 
     <finalName>${project.artifactId}</finalName> 
     <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.6</version> 
     <configuration> 
      <packagingIncludes>css_${css}</packagingIncludes> 
     </configuration> 
     </plugin> 
     </plugins> 
    </build> 
</project> 

लेकिन इस मामले फाइलों और निर्देशिकाओं WEB-INF अंतिम .war फ़ाइल में मौजूद नहीं के तहत में।

उत्तर

2

डिफ़ॉल्ट रूप से, maven-war-plugin की विशेषता में src/main/webapp के तहत सबकुछ शामिल होगा। जब आप यह निर्दिष्ट करने के लिए ओवरराइड

<packagingIncludes>css_${css}/**</packagingIncludes> 

तो प्लगइन केवल उस फ़ोल्डर (और सब कुछ उसके तहत आने वाले) और नहीं WEB-INF अब और शामिल होंगे।

<packagingIncludes>WEB-INF/**,css_${css}/**</packagingIncludes> 
तरह के एक विन्यास, सब कुछ के साथ WEB-INF और css_${css} के अंतर्गत सब कुछ के तहत

युद्ध में शामिल किया जाएगा: एक सरल समाधान फिर से शामिल WEB-INF है।


एक अन्य समाधान है कि फिर से जोड़ने फ़ोल्डरों की आवश्यकता नहीं है बजाय <packagingExcludes> उपयोग करने के लिए किया जाएगा। इस प्रकार, src/main/webapp के तहत सभी फ़ाइलों को शामिल किया जाएगा, जिन्हें हम यहां निर्दिष्ट करते हैं। इस मामले में, हम एक नियमित अभिव्यक्ति का उपयोग कर सकते हैं जो कहता है: cssand is not css_${css} से शुरू होने वाली सभी चीज़ों को बहिष्कृत करें।

<packagingExcludes>%regex[css_(?!${css}/).*]</packagingExcludes> 
+0

अब यह एक आकर्षण की तरह काम करता है। सहायता के लिए धन्यवाद! क्या आप '% regex []' –

+0

@ मोहम्मदफैसल '?' में काम की व्याख्या को समझा सकते हैं, जिसे "ऋणात्मक रूप से आगे" कहा जाता है। मैंने इस निर्माण के बारे में एक प्रश्न से जुड़ा हुआ है। यह स्ट्रिंग से मेल खाता है जो किसी अन्य स्ट्रिंग से शुरू नहीं होता है। – Tunaki

+0

ग्रहण से निर्भरताओं को अद्यतन करते समय इस अभिव्यक्ति को जोड़ने के बाद मुझे एक समस्या का सामना करना पड़ रहा है - 'एक आंतरिक त्रुटि तब हुई: "मेवेन प्रोजेक्ट अपडेट करना"। सूचकांक 7 सीएसएस _ (?! $ {सीएसएस} /) के पास अवैध पुनरावृत्ति। * 'जो' (? ' –

संबंधित मुद्दे