有可能这样做吗?
环境:多模块pom由mm1、mm2、mm3三个模块组成。模块mm2将mm1作为依赖项。可以在没有任何错误情况下构建父pom。
问题:是否可以在不将mm1安装到本地存储库中的情况下构建单模块mm2 (即,从mm2基目录运行maven )?
谢谢。
发布于 2009-10-24 02:03:00
在没有自动安装的情况下,可以只构建选定的项目。你需要有多模块构建(我假设你有)。在反应器模式下,每个命令都需要从反应器的根运行。
所以在你的例子中:
mvn reactor:make -Dmake.folders=mm2
在本例中,您将构建mm2模块及其所依赖的模块(mm1)。
有用的链接:
从书中的例子中,我只构建了项目persist和他的依赖项目模型。其他项目未涉及到mvn reactor:make -Dmake.folders=sample-persist
alt text http://www.sonatype.com/books/maven-book/reference/figs/web/running_aro-dependencies.png
另一个有用的命令是reactor:make-dependents
,它构建依赖于X的项目。
发布于 2009-10-23 20:39:28
我不确定您所说的“不将mm1安装到本地存储库”到底是什么意思。你是指以前构建mm2,还是永远不构建?
有疑问的是,Maven Tips and Tricks: Advanced Reactor Options博客文章中宣布的新构建选项之一可能会有所帮助:
从Maven2.1版本开始,有一些新的
命令行选项,允许您操作Maven2.1构建多模块项目的方式。这些新选项包括:
-rf,-- Resume -from Resume reactor from specified project -pl,--projects生成指定的反应器项目,而不是所有项目-am,-rf如果指定了项目列表,则还要生成列表所需的项目,--还--make--pl如果指定了项目列表,则还要生成依赖于列表中项目的项目
我特别想到了-pl
和-am
选项。要构建模块的子集,请从根目录运行以下命令
$ mvn --projects mm2 --also-make install
然而,我不确定这是否回答了你的问题(这对我来说并不完全清楚)。
发布于 2009-10-23 20:06:09
这违背了Maven2的依赖原则。这样做的真正目的是什么?
但是,我们可以设想将mm2的mm1依赖项定义为system
依赖项:
<dependency>
<groupId>...</groupId>
<artifactId>mm1</artifactId>
<version>...</version>
<scope>system</scope>
<systemPath>../mm1/target/</systemPath>
</dependency>
https://stackoverflow.com/questions/1612854
复制相似问题