2016-01-05 96 views
5

ben gibi bir dizin yapısı vardır: css üç ayrı dizinleri vardırmaven-savaş eklentisi: bütün dizinleri dışarıda ama bir

screenshot

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

(css_red, css_green, css_blue gibi). İşte, ben -D anahtarı dayalı bunlardan yalnızca birini dahil etmek istediğiniz:

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> 

Fakat son .war dosyasında bulunmayan WEB-INF altında bu dava dosyalarının ve dizinleri

.

cevap

2

Varsayılan olarak, maven-war-plugin'un packagingIncludes özniteliği src/main/webapp altındaki her şeyi içerecektir. Bunu belirtmek için geçersiz zaman

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

sonra eklenti yalnızca artık o klasörü (ve her şeyi bunun altında) ve WEB-INF içerecektir. css_${css} altında WEB-INF ve her şeyi altında böyle bir yapılandırma, herşeyle

<packagingIncludes>WEB-INF/**,css_${css}/**</packagingIncludes> 

savaşa dahil edilecektir: basit bir çözüm tekrar eklemek WEB-INF etmektir.


yerine <packagingExcludes> kullanmak olacaktır yeniden eklemek klasörleri gerektirmez Başka bir çözüm. Bu şekilde, burada belirttiğimizler hariç, src/main/webapp altındaki tüm dosyalar dahil edilecektir. Bu durumda, düzenli bir ifade kullanabiliriz: cssand is not css_${css} ile başlayan her şeyi hariç tut.

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

Şimdi bu bir çekicilik gibi çalışır. Yardım için teşekkürler! "% Regex []' –

+0

@MohammadFaisal '?” Adlı çalışmanın "negatif ileriye dönük" olarak adlandırılan şeyi açıklar mısınız? Bu yapıyla ilgili bir soruya bağlandım. Başka bir dizeyle başlamayan Dizelerle eşleşir. – Tunaki

+0

tek bir sorun Bu ifadeyi ekledikten sonra eklipse bağımlılıkları güncelleştirirken karşılaşıyorum - 'İçinde bir hata oluştu:" Maven Project'in Güncellenmesi ". İndeks 7 css _ (?! $ {Css} /). * 'Ye yakın bir şekilde yinelenen bir arrav ('' '' '' '' ('' –