题
可以做吗?
环境:多模块pom由3个模块组成:毫米1、毫米2、毫米3。模块 mm2 有 mm1 作为依赖项。可以没有任何错误地构建父 pom。
问题:是否可以在不将 mm1 安装到本地存储库的情况下构建单个模块 mm2(即从 mm2 基本目录运行 Maven)?
谢谢。
解决方案
如果没有自动安装,则不会,但可以仅构建选定的项目。您需要进行多模块构建(我假设您这样做)。在反应器模式下,每个命令都需要从 反应堆根.
所以在你的情况下:
mvn reactor:make -Dmake.folders=mm2
在这种情况下,您构建 mm2 模块和它所依赖的模块 (mm1)。
有用的链接:
从书中的示例中,我只构建项目持久化和他的依赖项目模型。其他项目未受影响mvn reactor:make -Dmake.folders=sample-persist
替代文本http://www.sonatype.com/books/maven-book/reference/figs/web/running_aro-dependency.png
其他有用的命令是 reactor:make-dependents
构建依赖于 X 的项目。
其他提示
我不确定你的意思是什么,“没有将mm1安装到本地存储库”。你是说以前建造mm2还是从不?
有疑问,也许在 Maven提示和技巧:高级反应器选项博客文章可以提供帮助:
从Maven 2.1版本开始, 有新的Maven命令行 允许您操作的选项 Maven将构建的方式 多模块项目。这些新的 选项是:
-rf, --resume-from Resume reactor from specified project -pl, --projects Build specified reactor projects instead of all projects -am, --also-make If project list is specified, also build projects required by the list -amd, --also-make-dependents If project list is specified, also build projects that depend on projects on the list
我特意想到 -pl
和 -am
选项。要构建模块的子集,请从根目录
$ mvn --projects mm2 --also-make install
但是,我不确定这会回答你的问题(这对我来说并不完全清楚)。
这违背了Maven2的依赖原则。这样做的兴趣是什么?
但是,我们可以想象将mm2的mm1依赖关系定义为 system
依赖关系:
<dependency>
<groupId>...</groupId>
<artifactId>mm1</artifactId>
<version>...</version>
<scope>system</scope>
<systemPath>../mm1/target/</systemPath>
</dependency>