2012-09-13 52 views
0

我試圖在我的java項目中用maven設置集成測試階段。我對jboss沒有任何依賴關係(除了由hibernate-entitymanager傳遞的jboss-common-core)。我爲故障安全插件的設置是:maven集成測試階段將jbossall-client.jar附加到類路徑中

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.12</version> 
    <executions> 
     <execution> 
     <phase>integration-test</phase> 
     <goals> 
      <goal>integration-test</goal> 
      <goal>verify</goal> 
     </goals> 
     </execution> 
    </executions> 
</plugin> 

當我運行mvn integration-test -Dmaven.failsafe.debug和聯播我的調試和評估System.getProperty("java.class.path")我看到一個jbossall-client.jar中的類路徑!當我在IntellJ 122.327本地運行測試時,類路徑不包含jbossall-client.jar。我一直試圖弄清楚爲什麼這個jar被添加到classpath中。有沒有其他人經歷過這個?提前致謝。

更新:我試圖從我的.m2/repository目錄中刪除jbossall-client,並且只運行clean和package階段,好像我的項目確實對此有依賴關係,因爲這個jar在運行包時被下載。仍然很奇怪,因爲我的POM對此jar沒有直接或傳遞依賴。此外,當我嘗試將其添加到類路徑中的故障安全插件運行時,通過增加配置

<classpathDependencyExcludes>org.jboss.client:jbossall-client</classpathDependencyExcludes> 

排除它,我得到以下錯誤:

Unable to parse configuration of mojo org.apache.maven.plugins:maven-failsafe-plugin:2.12:integration-test 
for parameter classpathDependencyExcludes: Cannot assign configuration entry 'classpathDependencyExcludes' 
with value 'org.jboss.client:jbossall-client' of type java.lang.String 
to property of type java.util.List -> [Help 1] 

failsafe plugin website狀態,標籤應該有價值groupId:artifactId這就是我所擁有的。任何想法,爲什麼這是失敗?

第二次更新:剛纔意識到在故障安全插件webpage中存在拼寫錯誤。在他們的例子:

<classpathDependencyExcludes> 
    <classpathDependencyExcludes>org.apache.commons:commons-email</classpathDependencyExcludes> 
    </classpathDependencyExcludes> 

確實應該

<classpathDependencyExcludes> 
    <classpathDependencyExclude>org.apache.commons:commons-email</classpathDependencyExclude> 
    </classpathDependencyExcludes> 

現在我能獲得通過解析錯誤,但jbossall客戶端仍然被加載到類路徑中。

回答

0

我跟蹤了這​​個問題,classpathDependencyExclude標記按預期工作。我愚蠢地排除了錯誤的groupId(我不包括org.jboss.client:jbossall-client,當傳遞依賴是jboss:jbossall-client時)。我觀察到的另一件事是,jbossall客戶端是第三級傳遞依賴項(即它是直接依賴項的第二個子項; myproject - > A - > B - > jbossall-client),它在父項目中定義Maven子模塊(在我的示例中,B是較大項目的子模塊)。當我使用依賴項插件檢查Maven依賴項時,它會報告實際的項目依賴項不包含jbossall-client。然而由於某種原因,集成測試階段似乎將其包含在classpath中。我將進一步調查,但現在黑客的作品。

相關問題