6
我正在开发使用Cassandra NoSQL数据库的应用程序,并且正在添加Web界面。我有2个项目:cassandra-access(这个项目是DAL)和web(这个项目是web应用程序)。与Maven传递第三方依赖关系
情景很简单。 Cassandra访问依赖于hector.jar,它不在maven仓库中。于是我通过MVN加入这个依赖于我的本地库安装:安装文件和我列出我的仓库在父POM:
<repositories>
<repository>
<id>loc</id>
<url>file://${basedir}/../mvn-local-repository</url>
</repository>
</repositories>
在Web项目POM我加在卡桑德拉访问的依赖。但是,当我启动Web应用程序与hello世界从数据库中读取我得到classNotFound异常,如果hector.jar不在类路径。当我编写mvn clean install时,web项目的结果战争在WEB-INF/lib中不包含hector.jar。这进一步证实了我的理论。
如何实现这一战争获得所有的传递依赖?我认为所有在编译范围内(这是默认的)的依赖将被复制。
Web项目POM:
<dependency>
<groupId>net.product</groupId>
<artifactId>cassandra-access</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
卡桑德拉访问POM:
<dependency>
<groupId>me.prettyprint</groupId>
<artifactId>hector</artifactId>
<version>0.7.0</version>
</dependency>
我发现上面的文字作品,以及。我刚刚在POM中引起了警告,导致maven不会包含所有的过渡依赖。调试这种情况的最好方法是使用mvn依赖项:tree -X – 2011-03-30 08:49:14