打印出的類路徑有運行測試時使用的Maven和JVM上運行一個JVM之間的差異時,總是丟失。
surefire插件將產生自己的JVM來運行你的測試用例。默認情況下,將包括以下對JVM的類路徑:
- 你的項目的類目錄
- 你的項目的測試類目錄
- 你的項目的依賴。
如果我已經正確地理解了您的問題,那麼您希望將另一個目錄添加到運行您的測試的JVM的類路徑中。如果是這樣,那麼你可以添加額外的類路徑條目就像這樣:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>path/to/your/additional/directory</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</plugin>
更多細節here。
如果要動態地改變通過命令行參數使用的萬無一失JVM類路徑(如您的MAVEN_OPTS提及暗示),那麼你可以定義一個additionalClasspathElement
這樣的...
<additionalClasspathElement>${additionalClasspathDir}</additionalClasspathElement>
..然後像這樣調用Maven:
mvn test -DadditionalClasspathDir=path/to/your/additional/directory
是否有任何方法將變量添加到這些路徑中,形式如果maven操作?我們寧願在我們的pom文件中沒有硬編碼路徑 – Johng
我已經更新了我的答案,以解決動態更改surefire插件使用的類路徑的要求。 surefire插件明確了它如何編寫它的類路徑,以及如果你想要的目錄不在項目的類路徑中,並且不能添加到它(使用[Maven Build Helper Plugin](http://www.mojohaus.org/build) -helper-maven-plugin /)例子),那麼使用'additionalClasspathElements'是你唯一的選擇。 – glytching
工作,只需要將-D前綴添加到變量 – Johng