2010-07-04 21 views
3

我們使用maven構建項目。我們嘗試在Maven構建本身中運行我們的單元測試用例,並且爲此我們需要在所有子項目的依賴項中添加DB2驅動程序jar。在maven構建參數中指定jar文件

我們需要一個解決方案,將jar文件的絕對路徑指定爲mvn命令行參數,以便在運行單元測試用例時使用它。

這是因爲驅動程序jar在我們的應用程序服務器lib文件夾中可用,我們不想在我們的項目的依賴項中指定它。

找不到一個合適的解決方案googling它,因此要求這裏的專家解決方案。

任何解決方法將有更大的幫助。

在此先感謝。

回答

1

通常的方法是向數據庫驅動添加依賴項,並將依賴項限制爲測試(測試範圍)。所以這個庫可用於單元測試,但不會部署和討論。

實際上講,我想創建此驅動程序(只是一個基本的POM文件)一個Maven構件,並將其放置在構建服務器Maven倉庫(或聯繫的方式,如果你使用它的項目)。

1

我們使用maven構建項目。我們嘗試在Maven構建本身中運行我們的單元測試用例,並且爲此我們需要在所有子項目的依賴項中添加DB2驅動程序jar。

好吧,maven的方式是聲明DB2驅動程序作爲父項目中的test作用域的依賴關係。

而不是這樣做,我們需要一個解決方案來指定jar文件的絕對路徑作爲mvn命令行參數,以便在運行單元測試用例時使用它。

您可以使用additionalClasspathElement在插件配置的路徑傳遞到驅動程序:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
    <additionalClasspathElements> 
     <additionalClasspathElement>path/to/additional/resources</additionalClasspathElement> 
    </additionalClasspathElements> 
    </configuration> 
</plugin> 

如果你variablelize它,你可以通過在命令行上的值。

但說實話,我不明白你爲什麼不把驅動程序安裝到企業存儲庫並聲明它是依賴項。如果您沒有公司存儲庫,請使用this previous answer(請不要使用system範圍不良做法)中描述的基於文件的回購協議。沒有很好的理由去冒險的方式。

+0

感謝您的建議。 我已經添加了具有絕對路徑(c:/ lib)的additionalClasspathElement,其中我有用於db2driver的jar。它不工作,我失去了一些東西。 – raksja 2010-07-05 10:11:48

1

我正在使用範圍設置爲'系統'的依賴關係來引用容器中可用但不在任何maven存儲庫中的jar。在這種情況下,罐子放在一個名爲像這樣的項目「LIB」文件夾中,:

<dependency> 
    <groupId>groupId</groupId> 
    <artifactId>artifactId</artifactId> 
    <version>version</version> 
    <scope>system</scope> 
    <systemPath>${project.basedir}/lib/library.jar</systemPath> 
</dependency> 

的的groupId,artifactId和version可以設置爲你想要的任何值,訣竅是,系統依賴性有以絕對路徑給出,這是通過使用project.basedir屬性解決的。也應該可以將完整路徑指定爲屬性。

相關問題