Maven:包装&模块依赖

时间:2013-01-24 14:03:41

标签: java maven intellij-idea

我有一个由几个模块组成的maven项目。主要结构和设置如下:

  • /project/pom.xml:packaging = pom,列出所有子模块,版本:TRUNK-SNAPSHOT
  • /project/core-module/pom.xml:packaging = jar
  • /project/war-module/pom.xml:packaging = war,取决于core-module${project.version}

如果这在某种程度上很重要,我会使用IntelliJ进行开发。

当我现在开发/运行/调试war-module并同时更改core-module中的代码时,事情就会失控。正在运行的war-module应用程序(通过jetty:run-exploded运行)使用我本地core-module中“已安装”的~/.m2/ repository而不是当前版本。如果我在IntelliJ中执行“重建项目”或在mvn clean运行之前无关紧要。

我的问题是:我每次都需要mvn install,我是否可以绕过已安装的软件包,还是必须更改包装选项?

1 个答案:

答案 0 :(得分:1)

长话短说,答案是:是的,在多模块项目中,每次都必须运行mvn install,以便war-module的依赖关系被编译并安装在本地存储库中

但是,对于本地测试,我通常建议使用IDE功能来测试我们的本地更改。使用IntelliJ非常容易配置,它支持许多不同的应用程序服务器。

原因是:想象一下,在一个大型团队中工作,使用企业共享存储库来保存您的公共依赖关系,而无需将它们发布到Maven中心。如果您的任何同事已对core-module进行了更改,提交了它们并通过内部共享仓库使其可用,那么Maven将下载该依赖项,然后使用它来运行Jetty插件。

这方面的好处是你将测试这些依赖项的最后版本,不好的一面是这些依赖项的代码与工作副本中的代码不同。