2013-05-16 16 views
11

Sorunun cevabını bulmak için forumu aradım, ancak bulamadım. Benim sorun şu ki:Bağımlı proje için/src/main/resources yerine/src/test/resources kaynağından maven kaynakları nasıl alınır?

İki projem var: ProjectA ve ProjectB. ProjectB ProjectA kullanıyor. ProjectA'da iki klasör var: /src/main/resources ve/src/test/resources. ProjectB'de şunu çalıştırın: mvn clean install. Test aşamasında, ProjectB'deki sınıfların/src/main/resources yerine/src/test/sources kaynaklarını kullanmasını istiyorum.

Bu

denedim budur: http://www.waltercedric.com/java-j2ee-mainmenu-53/361-maven-build-system/1349-maven-reusing-test-classes-across-multi-modules-projects.html

Benim soruna benzer, ancak ben ProjectA için test kavanoz golü yapılandırılmış sonra, ProjectB hala şekilde şekilde testler ProjectA kullanım özelliklerinde sınıfları/src/main/resources yerine/src/test/resources.

<project ...> 
    <parent> 
     ... 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 
    <artifactId>ProjectB</artifactId> 
    <packaging>jar</packaging> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-failsafe-plugin</artifactId> 
       <version>2.6</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>integration-test</goal> 
          <goal>verify</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>com.sensano</groupId> 
      <artifactId>ProjectA</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
     </dependency> 

     <dependency> 
      <groupId>ProjectA</groupId> 
      <artifactId>ProjectA</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
      <scope>test</scope> 
      <type>test-jar</type> 
     </dependency> 
    </dependencies> 

</project> 

bir yöntem Herhangi bir yardım mutluluk duyacağız var mı:

<project ...> 
    <parent> 
     ... 
    </parent> 

    <modelVersion>4.0.0</modelVersion> 
    <artifactId>ProjectA</artifactId> 
    <packaging>jar</packaging> 

    <dependencies> 
     ... 
    </dependencies> 

    <build> 
     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
      </resource> 
     </resources> 
     <testResources> 
      <testResource> 
       <directory>src/test/resources</directory> 
       <filtering>true</filtering> 
      </testResource> 
     </testResources> 

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

ProjectB olarak benim pom.xml gibi görünür: gibi

ProjectA My pom.xml görünüyor! Saygılarımızla

,
Mateusz Moroz

cevap

8

src/main/resources

ProjectA.jar 
|`-com 
| `-sensano 
| `-foo 
`-[the resource form src/main/resources] 

Ne yazık ki src/test/resources ayrıca aşağıdaki şekilde ProjectA-tests.jar adlı kavanoz dosyasına paketlenir aşağıdaki yapı olarak ProjectA.jar adlı kavanoz dosyaya paketlenmiş yapısı da.

ProjectA-tests.jar 
|`-com 
| `-sensano 
| `-foo 
`-[the resource form src/test/resources] 

size gereken kaynak adı src/main/resources ve src/test/resources den ikisi için de aynı ad ise

. Bazı sınıf yükleyici sorunları olabilir. IMHO, en yakın kazanır. Eğer ProjectA-tests önce ProjectA koymak yana

, o zaman en yakın olduğu ProjectBProjectA den src/main/resources kullanacağı kök neden olabilir.

<dependencies> 
    <dependency> 
     <groupId>com.sensano</groupId> 
     <artifactId>ProjectA</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <scope>test</scope> 
     <type>test-jar</type> 
    </dependency> 
    <dependency> 
     <groupId>com.sensano</groupId> 
     <artifactId>ProjectA</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </dependency> 
</dependencies> 

yakın ProjectA-tests olacak ve ProjectB yerine src/test/resources kullanmalıdır -:

şöyle ProjectA önce ProjectA-tests koyarak takas deneyin.

Umarım bu yardımcı olabilir.

İlgili konular