2008-10-03 45 views
86

對於不同配置文件,maven pom.xml文件中是否有不同的依賴關係?maven中不同構建配置文件的不同依賴關係

例如

mvn -P debug 
mvn -P release 

我想在一個配置文件中選擇具有相同類名和相同接口的不同實現的不同依賴項jar文件。

+0

這可以用於定位不同的Web服務器。例如,爲JavaEE 5服務器構建JavaEE 5服務器時,該服務器提供了不應包含在war文件中的JAXB之類的庫,與爲JavaEE 1.4服務器構建應該包含JAXB JAR的服務器。 – Leonel 2009-10-16 14:06:04

回答

135

引述maven documentation on this

簡檔元素包含兩個任選的活化(輪廓觸發器)和設定到POM以作出如果所選擇的文檔已被激活的變化。例如,爲測試環境構建的項目可能會指向與最終部署不同的數據庫。 或者依賴關係可能會根據所用的JDK版本從不同的存儲庫中提取。

(重點是我的)

只要把依賴的文件聲明本身內部的release配置文件和debug這樣做。

 
<profiles> 
    <profile> 
     <id>debug</id> 
     … 
     <dependencies> 
      <dependency>…</dependency> 
     </dependencies> 
     … 
    </profile> 
    <profile> 
     <id>release</id> 
     … 
     <dependencies> 
      <dependency>…</dependency> 
     </dependencies> 
     … 
    </profile> 
</profiles> 
+0

此方法將導致代碼在編輯模式下無法解析。如果調試處於活動狀態,則發行版的依賴關係jar將會丟失,並且代碼將會出錯。如何解決它? – brucenan 2016-12-02 07:28:50

+0

您可以將依賴關係層次結構中的發佈特定依賴項的作用域設置爲「提供」,並在發佈配置文件部分將該作用域重置爲「編譯」。因此,依賴關係可用於編譯,但不適用於「調試」配置文件的最終戰爭。 – uday 2017-02-20 22:50:51

3

您的groupId,artifactId應該在配置文件中作爲屬性進行標記,並且可以將您的依賴關係移動到通用部分。

相關問題