从多模块pom构建单个模块

时间:2009-10-23 11:35:47

标签: maven

有可能吗?

环境:多模块pom由3个模块组成:mm1,mm2,mm3。模块mm2具有mm1作为依赖性。可以构建父pom而不会出现任何错误。

问题:是否可以在不将mm1安装到本地存储库的情况下构建单个模块mm2(即从mm2基本目录运行maven)?

感谢。

3 个答案:

答案 0 :(得分:14)

我不确定你的意思是“没有将mm1安装到本地存储库”。你是说以前建造mm2还是从不?

有疑问,也许Maven Tips and Tricks: Advanced Reactor Options博客文章中宣布的一个新构建选项可以提供帮助:

  

从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

但是,我不确定这会回答你的问题(这对我来说并不完全清楚)。

答案 1 :(得分:3)

没有自动安装,但是只能构建选择的项目。你需要有多模块构建(我假设你这样做)。在reactor模式下,每个命令都需要从reactor的运行。

所以在你的情况下:

mvn reactor:make -Dmake.folders=mm2

在这种情况下,您需要构建mm2模块及其所依赖的模块(mm1)。

有用的链接:

从书中的例子我只构建了项目持久化和他的依赖项目模型。其他项目没有受到影响 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的项目。

答案 2 :(得分:0)

这违背了Maven2的依赖原则。这样做的兴趣是什么?

但是,我们可以想象将mm2的mm1依赖关系定义为system依赖关系:

<dependency>
    <groupId>...</groupId>
    <artifactId>mm1</artifactId>
    <version>...</version>
    <scope>system</scope>
    <systemPath>../mm1/target/</systemPath>
</dependency>
相关问题