1

我对我的 Maven 项目中 hibernate-annotations jar 的位置有一个具体的问题。

我的项目由三个模块组成。模块客户端和服务器都依赖于共享模块。Maven 为部署构建了两个包:Client + Shared 和 Server + Shared。

带注释的 Hibernate 实体位于 Shared 模块中,因为我需要在客户端和服务器之间传递它们(通过 RMI)。

现在我的问题来了。hibernate-annotations.jar 用作 Shared 模块的依赖项,以允许编译 Hibernate 实体。库本身依赖于 hibernate-core。结果,我在部署的客户端应用程序中拥有了休眠库,即使我在那里并不真正需要它们。罐子很大,我想让客户尽可能苗条。

是否有一些成熟的技术可以避免这个问题?想到的一个是使用基于 XML 的 Hibernate 配置,这样我就可以将 Hibernate 依赖项移动到 Server 模块,但我想坚持使用注释。

谢谢。

4

2 回答 2

1

我认为您应该在 pom.xml 中为依赖项使用范围标记。

看看这个并选择合适的:http ://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

据我说,如果你只需要在编译时依赖,你应该使用范围“编译”等等

希望对你有帮助!

于 2015-01-05T15:14:16.290 回答
1

您可以在客户端的 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>
于 2015-01-05T16:07:44.803 回答