8

有可能吗?

环境:多模块 pom 由 3 个模块组成:mm1、mm2、mm3。模块 mm2 具有 mm1 作为依赖项。可以在没有任何错误的情况下构建父 pom。

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

谢谢。

4

3 回答 3

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

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

于 2009-10-23T12:39:28.040 回答
3

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

所以在你的情况下:

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-dependencies.png

其他有用的命令是reactor:make-dependents构建依赖于 X 的项目。

于 2009-10-23T18:03:00.340 回答
0

这违背了Maven2的依赖原则。这样做有什么好处?

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

<dependency>
    <groupId>...</groupId>
    <artifactId>mm1</artifactId>
    <version>...</version>
    <scope>system</scope>
    <systemPath>../mm1/target/</systemPath>
</dependency>
于 2009-10-23T12:06:09.403 回答