我正在使用Spring 3和Hibernate 4 JPA。我对 javax.persistence JAR
感到困惑。我在Google上发现了以下两个Maven依赖项。请告诉我以下两个依赖项中需要哪个?
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
</dependency>
其中的第一个javax.persistence.persistence-api
是API Jar,它定义了应用程序应使用的与供应商无关的接口。
第二个是该API的EclipseLink实现。
可以删除对第一个javax.persistence
依赖项的引用,而只需使用EclipseLink jar。但是,有充分的理由不这样做。
根据与供应商无关的javax.persistence
API
编写和编译代码可确保您的应用程序代码可移植到不同的持久性提供程序。例如,如果您希望切换到Hibernate,则可以将其放在pom.xml中并删除org.eclipse
依赖项,而无需更改任何应用程序代码。
但是,您还需要更改一些细节。为了确保您的应用程序可以在持久性提供程序之间切换,“实现”依赖项仅应在运行时使用。否则,供应商特定的代码可以轻松地进入您的代码库。将以下内容添加到您的org.eclipse
依赖项中,然后查看您的应用程序是否可以编译。
<scope>runtime</scope>
结果,您可能会发现您的应用程序中包含特定于EclipseLink的代码。这意味着您不能在不更改代码库的情况下更改持久性提供程序。
这是否有问题取决于您。;)
问题内容: 我第一次使用Maven时,就陷入了依赖关系。 我使用Eclipse创建了一个Maven项目并添加了依赖项,并且该项目运行正常。 但是当我尝试通过命令行运行它时: 它下载依赖项,成功构建,但是当我尝试运行它时,出现NoClassDefFoundError: 我的是这样的: 谁能帮我? 问题答案: 默认情况下,Maven不会在生成的JAR文件中捆绑依赖项,并且在尝试通过命令行执行JAR文件
问题内容: 我正在运行一个依赖groovy 1.7-beta-1的项目。gmaven插件使用groovy 1.6版作为依赖项。在pom中,我在依赖性管理部分中将grooyv-all版本指定为: 但是,当我在调试模式下运行maven时,我看到groovy 1.6被用于对gmaven插件的依赖。我以为我的依赖项管理部分会重写此设置,因此它们都使用1.7-beta-1,但是由于常规版本不同,我遇到了错误
问题内容: 我有一个依赖关系如下: 当我部署一切正常时,这将拉下另一个引发ClassDefNotFound的依赖项。 我添加了两个依赖项,如下所示: 并且仍然面临着同样的问题,即:MVN带来下来不 我该如何解决? 编辑: 添加; 问题答案: 您可能有一个传递依赖项,另一个依赖项取决于您不需要的版本。 要获得所有直接和传递依赖关系的概述,请尝试: mvn依赖项:树 如果您发现同一依赖项的不同版本之间
我想构建这个项目,以便最终的jar在一个jar文件中包含所有依赖项(如果不可能的话,包括从依赖项到jar文件的类),我遵循了线程Including dependencies in a jar with Maven,但它也包含了我在pom中甚至没有提到的依赖项。这是我的POM,它只有两个依赖项。 我想当Final构建时,它包括pom中提到的特定依赖项(以类或jar形式)
保存package.json依赖项的最佳实践是什么? 例如,我看到很多依赖项是不固定的,比如:
如何将这个插件添加为依赖项和插件?我如何将此用作依赖项? 谢谢