多层应用程序中的 Hibernate 依赖项位置
Hibernate dependencies location in a multi tier application
我有一个关于 hibernate-annotations jar 在我的 maven 项目中的位置的具体问题。
我的项目由三个模块组成。客户端和服务器模块都依赖于共享模块。 Maven 构建了两个部署包:Client + Shared 和 Server + Shared。
带注释的 Hibernate 实体位于共享模块中,因为我需要在客户端和服务器之间(通过 RMI)传递它们。
现在我的问题来了。 hibernate-annotations.jar 用作 Shared 模块的依赖项以允许编译 Hibernate 实体。该库本身依赖于 hibernate-core。结果,我在已部署的客户端应用程序中拥有休眠库,即使我在那里并不真正需要它们。罐子很大,我想让客户尽可能苗条。
是否有一些既定的技术可以避免这个问题?我想到的一个是使用基于 XML 的 Hibernate 配置,这样我就可以将 Hibernate 依赖项移动到服务器模块,但我想坚持使用注释。
谢谢。
我认为您应该在 pom 中为依赖项使用范围标记。
看看这个,选择合适的:http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
根据我的说法,如果你只需要在编译时依赖,你应该使用作用域"compile"等等
希望对您有所帮助!
您可以在您的客户端的 pom.xml 中排除共享依赖项的一个或多个传递依赖项。这里的示例假设共享项目具有组 ID "org.shared"、工件 ID "shared" 和版本“0.0.1-SNAPSHOT”:
<dependency>
<groupId>org.shared</groupId>
<artifactId>shared</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</exclusion>
...
</exclusions>
</dependency>
我有一个关于 hibernate-annotations jar 在我的 maven 项目中的位置的具体问题。
我的项目由三个模块组成。客户端和服务器模块都依赖于共享模块。 Maven 构建了两个部署包:Client + Shared 和 Server + Shared。
带注释的 Hibernate 实体位于共享模块中,因为我需要在客户端和服务器之间(通过 RMI)传递它们。
现在我的问题来了。 hibernate-annotations.jar 用作 Shared 模块的依赖项以允许编译 Hibernate 实体。该库本身依赖于 hibernate-core。结果,我在已部署的客户端应用程序中拥有休眠库,即使我在那里并不真正需要它们。罐子很大,我想让客户尽可能苗条。
是否有一些既定的技术可以避免这个问题?我想到的一个是使用基于 XML 的 Hibernate 配置,这样我就可以将 Hibernate 依赖项移动到服务器模块,但我想坚持使用注释。
谢谢。
我认为您应该在 pom 中为依赖项使用范围标记。
看看这个,选择合适的:http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
根据我的说法,如果你只需要在编译时依赖,你应该使用作用域"compile"等等
希望对您有所帮助!
您可以在您的客户端的 pom.xml 中排除共享依赖项的一个或多个传递依赖项。这里的示例假设共享项目具有组 ID "org.shared"、工件 ID "shared" 和版本“0.0.1-SNAPSHOT”:
<dependency>
<groupId>org.shared</groupId>
<artifactId>shared</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</exclusion>
...
</exclusions>
</dependency>