Maven

2011-03-29 19 views
6

ile geçişli üçüncü taraf bağımlılıkları Cassandra NoSQL veritabanı kullanan uygulama geliştiriyorum ve web arayüzü ekliyorum. 2 projem var: cassandra-access (bu proje DAL) ve web (bu proje web uygulamasıdır).Maven

Senaryo çok basittir. Cassandra-access'in, maven deposunda olmayan hector.jar bağımlılıkları var. yüklemek dosyası ve ana pom benim depo listesi:: Ben MVN'nin aracılığıyla benim yerel deposuna yüklemek bu bağımlılığı eklendi Web projelerinde

<repositories> 
     <repository> 
     <id>loc</id> 
     <url>file://${basedir}/../mvn-local-repository</url> 
    </repository> 
</repositories> 

Cassandra-erişiminde bağımlılığı eklendi pom. Ama ben Merhaba dünya ile veritabanı uygulamasında veritabanından okunduğumda hector.jar sınıf yolunda değil sanki classNotFound istisnası alıyorum. Ben mvn temiz yazdığımda web projesinin sonuç savaşı WEB-INF/lib içinde hector.jar içermez. Bu benim teorimi daha da doğrular.

Bu savaşı nasıl elde edersiniz, tüm geçiş bağımlılıkları olur mu? Kapsam derlemesinde olan tüm bağımlılıkların (varsayılan olarak) kopyalanacağını düşündüm.

Web projeleri pom:

<dependency> 
     <groupId>net.product</groupId> 
     <artifactId>cassandra-access</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </dependency> 

Cassandra erişim pom:

<dependency> 
    <groupId>me.prettyprint</groupId> 
    <artifactId>hector</artifactId> 
    <version>0.7.0</version> 
</dependency> 
+0

Yukarıdaki metin de çalıştığını gördük. Sadece POM'da UYARILAR vardı ve bu da mavnenin TÜM BAĞIMSIZ BAĞIMSIZLARI İÇERMEMİŞTİR. Böyle bir durumda hata ayıklamanın en iyi yolu mvn bağımlılığını kullanmaktır: tree -X –

cevap

1

Belki değil optimal çözüm ancak benim için çalışıyor: lib dizininde Hector kavanozu koymak Cassandra erişim. cassandra-erişim pom eklemek:

<dependency>  
    <groupId>%HECTOR_JAR_GROUP_ID%</groupId> 
    <artifactId>%HECTOR_JAR_ARTIFACT_ID%</artifactId> 
    <version>%HECTOR_JAR_VERSION%</version> 
    <scope>system</scope> 
     <systemPath>${basedir}/lib/%HECTOR_JAR_NAME%</systemPath> 
</dependency> 

sonra aşağıdaki eklenti ekleyin:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>copy-dependencies</id> 
      <phase>package</phase> 
      <goals> 
       <goal>copy-dependencies</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.directory}/lib</outputDirectory> 
      </configuration> 
     </execution> 
    </executions> 
</plugin>