【问题标题】:Let Maven Directly Reference Compiled Java Classes from Another Project Under Development让 Maven 从另一个正在开发的项目中直接引用已编译的 Java 类
【发布时间】:2018-10-24 04:00:09
【问题描述】:

我有两个独立的项目。一个(项目 B)需要依赖于另一个(项目 A)。

Project A
    |
     - module A1
     - module A2
     - module A3
     - module A4

Project B
    |
     - module B1
     - module B2
     - module A1  <---- from Project A
     - module A2  <---- from Project A

现在每次我对项目 A 进行更改时,我都需要

  1. 创建 jar 并将它们推送到本地 maven 存储库。 (由于项目 A 是一个巨大的项目,这需要一段时间)
  2. 让项目 B 更新对项目 A 的依赖项

这在开发模式下很乏味。

我想知道是否有办法让项目 B 中的 Maven直接 引用已编译的 Java 类,以便我可以在开发模式下至少跳过第 1 步?

PS:我看过here 的答案,但这不是我想要的。

编辑:项目 A 是一个超级遗留项目,它没有正确设置 Maven,仍然依赖 Eclipse 来管理所有依赖项,而项目 B 已经正确设置了 Maven,可以完全构建/编译/打包任何 IDE 的帮助。

由于某些业务需求,我们目前不想为项目 A 重新配置 Maven。因此,为项目 A 和项目 B 创建一个新的父项目以便 maven 管理依赖关系有点困难。

想法?

提前谢谢你。

【问题讨论】:

  • 听起来这部分应该重构到一个单独的项目中,或者你的正确项目属于更大的项目......
  • @khmarbaise 对于您的选项 1,您的意思是将两个项目之间的共同部分提取到自己的项目中吗?如果是这样,由于其他一些业务需求,恐怕现在这不是我的选择。但我同意这是一个很好的方法。现在我对你的选项 2 感兴趣。
  • 将项目 B 移到项目 A 中,因为它看起来像是在使用它的依赖项还是更好的是它的代码?

标签: java maven development-environment compiled


【解决方案1】:

您可以创建一个父 Maven 项目(pom 类型),然后将您的项目作为该项目的 A 和 B 模块。 您可以让一个模块将另一个模块声明为依赖项,并且在构建父项目时,两个模块都以正确的顺序构建。

使用 Eclipse 非常简单。

另外,如果您在 Eclipse 中导入这两个项目,则所使用的类文件是 IDE 刚刚编译的那些文件(从而绕过您的本地 maven 存储库)

否则,您可以使用此(已弃用!)设置从特定位置导入 jar。

<dependency>
 <groupId>my1</groupId>
 <artifactId>my1</artifactId>
 <version>1.0</version>
 <scope>system</scope>
 <systemPath>C:/Users/myuser/.m2/repository/xx/asd/bnd/bndlib/2.1.0/bndlib-2.1.0.jar</systemPath>
</dependency>

【讨论】:

  • 感谢您的快速回复。我已经更新了问题描述。你还觉得你的建议合适吗?很抱歉缺少信息。
  • 嗨,现在你需要的更清楚了..(尽管我强烈建议你修复你的构建)。您可以从特定位置导入 jar
【解决方案2】:

您可以尝试使用热插拔代理进行动态代码演进 (DCEVM)。它有一些很酷的功能。它可以生成类文件,并且会立即生效。

【讨论】:

  • 这对我来说是一个非常酷/新的想法。我一定会在其他时间尝试一下。不幸的是,目前它有点超出范围。
猜你喜欢
  • 1970-01-01
  • 2021-11-05
  • 2017-02-09
  • 2012-09-08
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多