【问题标题】:How do the dependencies of a maven project become available to it at runtime?maven 项目的依赖项如何在运行时对其可用?
【发布时间】:2012-10-21 00:56:14
【问题描述】:

我在一个 maven 项目(项目 A)中有我的 POJO 和 DAO 我在另一个 maven 项目中创建了一个服务,收集了我需要的 DAO(在项目 B 中) 我创建了第三个带有 swing gui 主类的 maven 项目(项目 C)

项目C依赖B,B依赖A。

当我声明我的服务(项目 B)以使用函数将数据提取到 gui(项目 C)时,我在服务的资源使用上收到 Java 空指针异常。

项目不能仅通过依赖项进行通信,还是我需要一些反序列化等?

逻辑 POJO(实现可序列化) -> DAO -> 服务 -> GUI

【问题讨论】:

  • 这确实不是一个坏问题,只是令人困惑
  • 你也需要了解一下maven的依赖机制。 maven.apache.org/guides/introduction/…
  • 可以这么简单,我必须从项目 A 或 B -> C 添加 applicationContext 吗?

标签: maven dependencies communication


【解决方案1】:

所以,您似乎正在执行项目 C 中的代码。了解这些项目的类型会有所帮助。 . .但让我们假设它们是罐子。默认情况下,jar 不会被构建为在其自身内部包含所有依赖项。这是因为 Maven 期望您像 Java 社区中的大多数人一样使用 jar,即它们与所需的所有其他 jar 一起安装到运行时中。如果每个 jar 都将其完全依赖关系树包含在自身内部,那将是一团糟。因此,您似乎期望 Maven 构建将您所有的依赖链拉入您的项目 C 的最终工件中,但这并没有发生。

有几种方法可以将您的依赖项添加到您的最终工件中。假设您的 swing 项目是一个 jar,您可以使用程序集插件的“jar-with-dependencies”程序集类型来执行此操作。它会生成一个包含所有依赖项的 jar。

http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html#jar-with-dependencies

【讨论】:

  • 它们是 jars 并且只有一个 main 函数在 Project C 中运行
  • 我在添加依赖项时没有任何问题,项目 A 和 B 中的类和方法在项目 C 将它们作为依赖项后可供项目 C 使用。但是当项目 B 中的方法在项目 C 中使用时,它们会抛出空指针异常
  • 我明白了。 . .听起来它与代码有关,而不是与构建有关。如果这些类在运行时可用,那么您实际上并没有构建问题。
  • 可能不是构建,我想做的是从新的 JavaFX 项目 (GUI) 访问存在于 maven 项目中的 DAO。我在 FX 项目库中添加了 maven 项目 jar。但是,当我导入 DAO 类并使用函数(例如 findAll())时,对 mavenproject 的调用会返回 Null Pointer Exception
【解决方案2】:

这是我从我的 maven 项目(项目 A)http://www.java2s.com/Code/Java/Spring/LoadconfigwithFileSystemXmlApplicationContext.htm987654321@获取数据所需要的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-01
    • 2016-03-08
    • 2015-12-19
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    相关资源
    最近更新 更多