2013-04-04 26 views
9

Çok modüllü bir Maven + Spring projem var. Bazı modüller diğer modüllere bağlıdır. Çok modüllü bir projede, bir maven modülü, başka bir modülün geçişli test kapsamı bağımlılıklarına bağlı olabilir mi?

en biz persistence adlı modül bağlıdır services adlı bir modül var diyelim.

hizmetleri modülü: Bahar düzeyinde

  • , Maven düzeyinde persistence bağlamı
  • ithal persistence modül ile ilgili bazı configuratrion tanımlar persistence modül

bağlıdır. .. süreklilik: veri kaynağı, JPA, işlemler ...

Bazı bağımlılıkları var Test kapsamı ile sınırlı olan DB'yi (JDBC sürücüleri, DBCP, H2) test etmek için kullanılır, çünkü uygulama kurulduğunda, DataSource konteynerde (Tomcat) tanımlanır ve JNDI aracılığıyla erişilir.

Şimdi, services modülünün Maven test aşamasında, persistence modülünün test kapsamlı (geçişli) bağımlılıklarına erişim sağlamak istiyorum.

Maven manual (Table 3.1)

normalde test kapsamı bağımlılıkları geçişli mevcut olmadığını söylüyorlar.

Çok modüllü bir proje kapsamında bunları bir şekilde elde etmek mümkün mü?

İyi alternatifler hangileri değilse? (Üst paçada test bağımlılıklarını tanımlayın? ...)

cevap

20

kalıcılık modülü:

<!-- Services module --> 
<dependency> 
    <groupId>${project.groupId}</groupId> 
    <artifactId>services</artifactId> 
    <version>${project.version}</version> 
</dependency> 
<dependency> 
    <groupId>${project.groupId}</groupId> 
    <artifactId>services</artifactId> 
    <version>${project.version}</version> 
    <type>test-jar</type> 
    <scope>test</scope> 
</dependency> 

Not: O

<build> 
    <plugins> 

      <!-- Generate test jar too --> 
      <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> 

bir test başka modülün bağımlılığı kapsamlı olarak örneğimizde, services modülü bu test kavanoz bildirerek type dışında, test-jar ve scope olarak ayarlanan ve ilk olarak aynı olan ikinci bağımlılık sınanacak şekilde ayarlanır.

Şimdi, service modülünde yazılı testler persistence modülünün test sınıflarına erişebilir hayal ediyorum (bu çalışır) değil, aynı zamanda testine kalıcılık modülünün bağımlılıkları kapsamlı.

Ancak bu şekilde çalışmadığını bilinen bir sorun (https://issues.apache.org/jira/browse/MNG-1378) 'dir. 2005'ten beri açıktı, bu yüzden yakın bir gelecekte sabit görmedim ... ama kim bilir.

Si Sadece ama, işaret konu ile ilgili iken, cevap vermez

+0

Bunun için teşekkürler, sadece bir saat geçirdim diye merak ettim sınıfta bulamadım istisna :( – PiersyP

+0

TEŞEKKÜR EDERİZ! Ne var ki, ana modül artefaktı için bağımlılığı eklemem gerekiyordu, sadece " testi 'dır, ancak diğer insanların kilometre durumu değişebilir. – CullenJ

1

olmalıdır, ancak yapmaz. Sağlanan kapsam ile de olur. Sorun burada açmış: Ben örneğimizde, diğer tarafından bir bağımlılık olarak kullanılan modülünde, dışlayıcı bir türüdür bir test JAR, üreten tarafından yani çalışması gerektiğini tam olarak nasıl bulundu https://issues.apache.org/jira/browse/MNG-5255

+0

teşekkür ederim ... hem modüllerin test kapsamına sahip bağımlılıkları çoğaltmak, ya da sadece ana pom onları tanımlamak zorunda kalacak benim soru. Aslında, orada sahip oldukları neredeyse tam tersi problemdir: test/sağlanan bağımlılıkların geçiş bağımlılıkları nihai JAR'da yer almaktadır. –

+0

Üzgünüm! tl; dr :) Test kapsamı geçiş bağımlılıklarına ünite test sınıfında olmamaya çalıştık, bu yüzden soruyu gördüğümde, aynı sorun olduğunu varsaydım. – tdrury

+0

Başka bir modül bunları sınama kapsamı bağımlılıkları olarak bildiriyor mu? Görmek için etkili POM (eclipse veya yardım eklentisi aracılığıyla) alın. – tdrury