2016-07-25 195 views
3

我有一個包含一些測試的項目,它所做的只是創建一個test-jar以由其他項目運行。而且它依賴於一個又一個神器,讓我們稱之爲神器X依賴注入和測試

則是運行test-jar多個其他項目,使用maven-surefire-plugin

我有神器X的多個實現,我想要做的就是能夠使用我想要的實現,而不是X

例如要運行這些測試:

項目A我想運行使用實施0123測試

項目 B

我想用實施運行的測試B

這似乎並不可能,因爲一旦產生test-jar,它擁有神器X硬編碼在它

所以我接受任何其他的解決方案

編輯:

額外的信息:

項目的POM文件生成測試:

部分用於生成test-jar

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.4</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>test-jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

神器X依賴性:

<dependency> 
     <groupId>com.conztanz</groupId> 
     <artifactId>X</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </dependency> 

的一個項目的POM文件運行測試(項目A):

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.15</version> 
      <configuration> 
       <dependenciesToScan> 
        <dependency>testJar</dependency> 
       </dependenciesToScan> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

理想情況下我要的是做一些事,告訴項目AOverride神器X與它自己的執行

我希望這是現在更有意義

+1

這對我來說太抽象了。也許你可以發佈各種'pom.xml'的相關部分,以及簡化的項目結構? – Stewart

+0

好吧我會添加一些例子 – isco

回答

1

我認爲你正在尋找的範圍稱爲provided

的依賴應該是這樣的:

<dependency> 
    <groupId>com.conztanz</groupId> 
    <artifactId>X</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <scope>provided</scope> 
</dependency> 

這告訴Maven:「嘿,我需要這個來編譯,但不包括在目標輸出,因爲一個容器(或其它)將提供罐子本身。「

+0

有趣,你認爲其他項目應該如何提供他們的X神器的實現? – isco

+0

作爲一個普通的依賴關係,在他們自己的'pom.xml'中 – Stewart