我对Java的相对较新的& maven,所以为了了解我的方式,我决定做一个项目作为学习的一种手段。Java - 获取jar依赖关系权
我拿起一个很常见的堆栈:
- 的Java 1.6
- 休眠(带注释)
- 春季(带注释)
- 的JUnit 4
- Tomcat的
- 的Oracle XE/In-mem hsqldb
迄今为止,我遇到的最大问题之一是获得jar版本的正确组合以获得稳定的环境。两个月后,我的问题是still fighting with。
很多时候我得到noSuchMethod或classNotFound异常抛出,并且事实证明Spring模块A x.x.x与Hibernate模块B y.y.y不兼容。甚至,正如通常一样,弹簧模块A xxx与弹簧模块B不兼容yyy
我期望从干净的版本开始,版本依赖应该是最小的 - 只需抓住最新版本,一切都应该工作。但事实并非如此。
我预计使用maven会简化这个过程,毫无疑问它已经。
但它绝对不是无痛。我曾经想过,如果模块A需要特定版本的模块B,它会在该行的某处执行,并且certinaly会提供更有意义的消息,只是“noSuchMethod”。
此外,似乎我发现这些问题的唯一方法是尝试新方法调用,获取可怕的noSuchMethod错误,并开始使用Google搜索。
我在这里错过了一些让自己变得更加困难的事情吗?
作为参考,这里是我的pom的依赖部分...如果您发现任何可怕的非标准,请让我知道!
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>ojdbc</groupId>
<artifactId>ojdbc</artifactId>
<version>14</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>
<dependency><!-- java bytecode processor -->
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.8.0.GA</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.8.0.7</version>
</dependency>
<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.4.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>3.3.0.ga</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.3.1.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>3.1.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.4.0.GA</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
感谢
马蒂
你能提供一些你得到的错误的例子吗? – 2009-05-19 12:40:27