Java 一个Maven项目依赖另一个Maven项目的IntelliJ:如何提高效率?

Java 一个Maven项目依赖另一个Maven项目的IntelliJ:如何提高效率?,java,maven,intellij-idea,Java,Maven,Intellij Idea,我的团队在运行依赖于其他Maven项目的Maven项目时经常会遇到不便,这些项目已经过修改,但没有重新安装到本地存储库中 为了简化,假设我有两个Maven项目Business和Web。我的Web项目在其依赖项中包含业务项目和Jetty插件,该插件允许我运行本地Web服务器进行开发 在IntelliJ中,两个项目都使用Maven Add project在同一窗口中打开,因此我可以在两个项目之间轻松地浏览代码 目前,我已经在IntelliJ中设置了一个运行配置,以便在业务项目上运行mvn clean

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

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

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

目前,我已经在IntelliJ中设置了一个运行配置,以便在业务项目上运行
mvn clean install-DskipTests
,然后在Web上运行
mvn clean jetty:Run
。这使我能够运行Web,并在业务中进行最新的修改。如果我没有在业务项目上运行
clean install
,那么Web将在较旧版本的业务源代码上运行。此外,这将打乱IntelliJ调试器,因为正在调试的源代码与运行时类不匹配

在实际应用程序中,依赖项注入引导项目可能依赖于Web、业务、某些数据库适配器X、某些数据库适配器Y、某些API客户端适配器。。。因此,
清洁安装
可能成本高昂。此外,很容易忘记构建dependee项目,这就是为什么在运行Jetty之前总是运行Maven目标的原因


在开发过程中是否有更高效的方法,以便在运行依赖项目时激活对依赖项目的修改,而无需运行任何/多个Maven目标?

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

事实已经如此。我是不是遗漏了什么?我复制了以下内容作为示例:我不仅在project web上执行目标失败:无法解析project com的依赖项。示例:web:war:1.0-SNAPSHOT:找不到工件com。示例:business:jar:1.0-SNAPSHOT当
jetty:run
在web上运行时如果我不在本地安装工件,如果我不在本地安装工件,我对Business中的类所做的任何修改都不会在Web上的
jetty:run
之后反映出来。如果两个项目在单独的IntelliJ窗口中,它们无法相互看到。啊,你需要这个来处理jetty:run。这不会拾取Maven依赖项中的更改,只会拾取本地项目文件系统中的更改。您可能希望在Intellij中运行Jetty,这将为您提供IDE的全部功能。到目前为止,我所看到的最好的Web服务器体验是与Glassfish捆绑在一起的Netbeans。一切都正常。苏,哇,我不知道为什么我没有想到这一点。。。这对我们来说已经足够好了!明天我会在工作中尝试这种方法。您可以编辑您的答案,以便它提到避免使用jetty:run,然后如果我看到它有效,并且没有其他人使用其他更好的方法回答,我将能够接受它。我基于jetty创建了一个运行配置,它确实有效,包括热代码交换。谢谢听起来你应该把那些依赖于另一个的项目放到一个单一的多模块构建中…这将使处理更容易…@khmarbaise我们已经在使用多模块构建并在IntelliJ中打开根项目了。现在问题已经解决了,因为我已经设置了Jetty运行配置(而不是运行Maven目标来运行Jetty)。