【问题标题】:IntelliJ with one Maven project depending on another Maven project: How to be efficient?IntelliJ 与一个 Maven 项目依赖于另一个 Maven 项目:如何高效?
【发布时间】:2017-10-24 23:39:50
【问题描述】:

我的团队在运行依赖于其他 Maven 项目的 Maven 项目时经常遇到不便,这些项目已修改但未重新安装到本地存储库。

为了简单起见,假设我有两个 Maven 项目 BusinessWeb。我的 Web 项目在其依赖项中包含 Business 项目和一个 Jetty 插件,它允许我运行本地 Web 服务器进行开发。

在 IntelliJ 中,两个项目都使用 Maven Add project 在同一个窗口中打开,因此我可以轻松地在两个项目之间浏览代码。

目前,我在 IntelliJ 中设置了运行配置,以便 mvn clean install -DskipTests 将在 Business 项目上运行,然后在 Web 上运行 mvn clean jetty:run。这使我可以使用在 Business 中所做的最新修改来运行 Web。如果我不在Business 项目上运行clean install,那么Web 将在旧版本的Business 源代码上运行。此外,这会弄乱 IntelliJ 调试器,因为正在调试的源代码与运行时类不匹配。

在实际应用中,Dependency Injection Bootstrap 项目可能依赖于WebBusinessSome Database Adapter X em>、Some Database Adapter YSome API Client Adapter...因此clean install 可能会变得昂贵。另外很容易忘记构建依赖项目,这就是为什么Maven目标总是在运行Jetty之前运行的原因。

有没有办法在开发过程中提高效率,以便在运行依赖项目时对依赖项目的修改将处于活动状态,而无需运行任何/许多 Maven 目标?

【问题讨论】:

  • 听起来你应该把那些依赖于另一个的项目放到一个单一的多模块构建中......这将使处理更容易......
  • @khmarbaise 我们已经在使用多模块构建并在 IntelliJ 中打开根项目。这个问题现在已经解决了,因为我已经设置了一个 Jetty 运行配置(而不是运行一个 Maven 目标来运行 Jetty)。

标签: java maven intellij-idea


【解决方案1】:

创建一个小的父项目 pom.xml,它将 Business 和 Web 作为模块引用。然后告诉 Intellj 打开父项目 - 这将允许 Web 访问业务(如果正确引用),而无需在本地安装工件。

【讨论】:

  • 已经是这样了。我在这里错过了什么吗?我复制了以下内容作为示例:github.com/Hurricaaane/maven-deptest/blob/master/pom.xml 如果我不在本地安装工件,我不仅会在 Webjetty:run 时获得Failed to execute goal on project web: Could not resolve dependencies for project com.example:web:war:1.0-SNAPSHOT: Could not find artifact com.example:business:jar:1.0-SNAPSHOT,而且我对类所做的任何修改如果我不在本地安装工件,Business 中的jetty:run 之后将不会反映在 Web 上。
  • 如果您在不同的 IntelliJ 窗口中有两个项目,它们将无法看到彼此。
  • 啊,你需要这个来使用 jetty:run。这不会影响 Maven 依赖项的变化,只是在本地项目文件系统中。您可能希望改为在 Intellij 中运行 Jetty - 这将为您提供 IDE 的全部功能。到目前为止,我见过的最好的网络服务器体验是与 Glassfish 捆绑在一起的 Netbeans。一切正常。s
  • 哦,哇,我不知道为什么我没有想到...这对我们来说可能已经足够了!我明天将在工作中尝试这种方法。您可以编辑您的答案,使其提及避免使用 jetty:run,然后如果我发现它有效并且如果没有其他人用其他更好的方法回答,我将能够接受它。
  • 我创建了一个基于 Jetty 的运行配置,它确实有效,包括热代码交换。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 2011-03-26
  • 2018-02-10
相关资源
最近更新 更多