我的Maven项目中有三个模块(稍微简化):
模型和持久性显然取决于javax.persistence,但我认为应用不应该.
该javax.persistence依赖移动到顶层POM的dependencyManagement,因为它在多个子模块,其中我只引用条目出现部分.
让我感到惊讶的是,我必须在application设置范围时引用依赖关系provided,而我的范围是什么时候不必compile.
随着一个范围provided,如果我没有在清单中dependencies的应用,构建失败,从javac的错误消息:
com.sun.tools.javac.code.Symbol $ CompletionFailure:找不到javax.persistence.InheritanceType的类文件
这是怎么回事?
Pas*_*ent 12
模型和持久性显然取决于javax.persistence,但我认为应用程序不应该.
确实如此.但是传递依赖分辨率无关,与你的问题(实际上,javax.persistence是provided要model和persistence上application取决于与compile范围,从而在记录它被省略3.4.4传递依赖).
在我看来,你是这个bug的受害者:http://bugs.sun.com/view_bug.do?video_id = 6550655
我对使用继承注释的EJB3实体有同样的问题:
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)当ejb3 annatations不在类路径上时,使用此实体的客户端类将无法编译,但崩溃时出现以下消息:
com.sun.tools.javac.code.Symbol$CompletionFailure: class file for javax.persistence.InheritanceType not found[...]
请注意,这是bug 6365854的特例(据报道已修复); 这里的问题似乎是注释使用枚举作为其值.
当前的解决方法是将缺少的枚举添加到CLASSPATH.
在您的情况下,"更糟糕"的方法是添加javax.persistence作为模块的provided依赖application.但这是JVM bug的一种解决方法,application不应该需要那个依赖来编译.
| 归档时间: |
|
| 查看次数: |
6539 次 |
| 最近记录: |