Переходные сторонние зависимости с Maven - PullRequest
6 голосов
/ 29 марта 2011

Я занимаюсь разработкой приложения, использующего базу данных Cassandra NoSQL, и добавляю веб-интерфейс.У меня есть 2 проекта: cassandra-access (это проект DAL) и веб (этот проект является веб-приложением).

Сценарий прост.Cassandra-access имеет зависимости от hector.jar, которого нет в репозитории maven.Поэтому я добавил эту зависимость в свой локальный репозиторий с помощью mvn install: install-file и перечислил свой репозиторий в родительском pom:

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

В веб-проектах pom я добавил зависимость от Cassandra-access.Но когда я запускаю веб-приложение с привет-миром, читаемым из базы данных, я получаю исключение classNotFound, как будто hector.jar не находится на пути к классам.Когда я пишу mvn clean install, возникающая война веб-проекта не включает hector.jar в WEB-INF / lib.Это еще раз подтверждает мою теорию.

Как добиться этой войны, чтобы получить все переходные зависимости?Я думал, что все зависимости, которые находятся в области компиляции (которая по умолчанию) будут скопированы.

Веб-проекты pom:

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

Cassandra-access pom:

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

1 Ответ

1 голос
/ 29 марта 2011

Возможно, это не оптимальное решение, но оно работает для меня: поместите гектар jar в каталог lib доступа cassandra.добавьте к pom-доступу cassandra:

<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>  

, затем добавьте следующий плагин:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...