【问题标题】:Importing two different classes from two modules with the same package path从具有相同包路径的两个模块导入两个不同的类
【发布时间】:2021-10-27 17:55:35
【问题描述】:

我有一个具有主 POM 模块的 maven 项目,例如 Main。 Main 包含两个 pom 模块:“core”和“app”。 “core”包含 jar-module “A”,“app”包含 jar-module “B” 我有下一节课:

  1. app.B.src.main.java.di.AModule.kt //依赖注入模块
  2. app.B.src.main.java.domain.App.java //主应用
  3. core.A.src.main.java.domain.BModule.kt //另一个注入

当我将 AModule.kt 和 BModule.kt 导入 App.java 时,它看起来像

import di.AModule;
import di.BModule;

Maven 无法完成安装阶段并说“找不到符号”指向 import AModule,这在语义上更接近 App.java

我应该如何处理 pom 文件或包来解决这个问题?

附:我还有一个问题,maven 在测试阶段看不到 core.A.src.test.java.SomethingTest.kt

【问题讨论】:

  • 第二次导入中的di.BModule来自哪里?你只提到了di.AModule (1.) 和domain.BModule (3.)。
  • 您是否在B 的 POM 中将A 声明为<dependency>
  • @GeroldBroser core.A.src.main.java.di.BModule.kt*
  • app.B.src.main.java.di等真的是你的包结构吗?

标签: java maven kotlin module dependencies


【解决方案1】:

您的项目(根据可以从您的问题中提取的内容):

+- Main
   +- core
      +- src/main/java
      |  +- di
      |     +- AModule.kt
      +- target
      |  +- A.jar
      +- pom.xml ... <artifactId>A
   +- app
      +- src/main/java
      |  +- domain
      |     +- App.java
      |     +- BModule.kt
      +- target
      |  +- B.jar
      +- pom.xml ... <artifactId>B

项目AB 相互独立。作为&lt;module&gt;Main 的两个成员,您可以一口气构建它们(通过构建Main)。

为了能够在App 中引用AModule,您必须在B 的POM 中将其JAR A 声明为&lt;dependency&gt;

    ...
    <artifactId>B</artifactId>
    ...
    <dependencies>
        <dependency>
            <groupId>...</groupId>
            <artifactId>A</artifactId>
            <version>...</version>
        </dependency>
    ...

包含代码并应创建工件的项目的 &lt;packaging&gt; 类型必须是 jar, war, etc.,而不是 pom

还建议将不同的源类型分开,例如:

   ...
   +- app
   |  +- src/main
   |     +- java
   |     |  +- domain
   |     |     +- App.java
   |     +- kotlin
   |        +- domain
   |           +- BModule.kt
   ...

【讨论】:

  • 想要更正您绘制的结构:core 包含具有 src...AModule 的 jar 打包模块 Acore 是 pom 包装。 app 包含 jar 包 B,它具有 src...BModuleApp,以及 app 是 pom 包装。我在 app/pom.xml 中声明了对整个 core-module 的依赖,并在 app/B 中声明了对 A-module 的依赖/pom.xml
  • @ShpilevojArsenij 带有&lt;packaging&gt;pom 的项目中的代码未编译、测试等,也未创建工件。此打包类型仅适用于包含对 (sub-)&lt;module&gt;s 的继承声明的父项目。将AB的封装类型改为jar
猜你喜欢
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
  • 2012-12-09
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
相关资源
最近更新 更多