2011-09-13 76 views
0

有沒有一種方法可以讓我通過命令開關來改變我的依賴關係?maven的兩個版本的依賴關係

意義,我有

<dependency> 
      <groupId>api</groupId> 
      <artifactId>api</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 

     </dependency> 

     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-core</artifactId> 

     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 

     </dependency> 

,並以這樣的方式在那裏,如果我做-Dprovided

MVN包設置它

我的有效POM將

<dependency> 
      <groupId>nmsc</groupId> 
      <artifactId>nmsc_api</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 

     </dependency> 

     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-core</artifactId> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <scope>provided</scope> 
     </dependency> 

沒有使用配置文件作爲配置文件要求我把依賴關係放在兩次。這可能嗎?

回答

2

使用配置文件不要求你列出的依賴關係多次,如果你用的變量配對,但如果你只是在做,對於一個單一的財產,那麼也許你應該直接重寫一個屬性:

<properties> 
    <myExeScope>compile<myExeScope> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>nmsc</groupId> 
     <artifactId>nmsc_api</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.struts</groupId> 
     <artifactId>struts2-core</artifactId> 
     <scope>${myExeScope}</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <scope>${myExeScope}</scope> 
    </dependency> 
</dependencies> 

那麼你應該能夠覆蓋指定依賴的範圍:

mvn -DmyExeScope=provided 

注意,我沒有編這一點,所以如果有錯別字請予以更正,注意糾正。

+0

這麼簡單它的輝煌。謝謝 – scphantm