【问题标题】:Build single module from multimodule pom从多模块 pom 构建单个模块
【发布时间】:2010-12-09 10:19:23
【问题描述】:

可以吗?

环境:Multimodule pom由3个模块组成:mm1、mm2、mm3。模块 mm2 具有 mm1 作为依赖项。可以无错误地构建父 pom。

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

谢谢。

【问题讨论】:

  • 你是鲁道夫吗?你有免费的吗? :D

标签: maven


【解决方案1】:

没有自动安装,但可以只构建选定的项目。您需要构建多模块(我假设您这样做)。在 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】:

    我不确定“不将 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】:

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

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

    <dependency>
        <groupId>...</groupId>
        <artifactId>mm1</artifactId>
        <version>...</version>
        <scope>system</scope>
        <systemPath>../mm1/target/</systemPath>
    </dependency>
    

    【讨论】:

    • 这让我的眼睛流血了:)
    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2010-11-09
    • 2014-03-03
    • 2013-02-23
    相关资源
    最近更新 更多