【问题标题】:Always clean certain module in maven build始终在 Maven 构建中清理某些模块
【发布时间】:2014-07-08 00:37:49
【问题描述】:

在实际构建多模块 maven 项目之前,如何确定将在多模块项目中构建哪些模块。为什么:

  • 需要经常清理某些模块(注意:不是所有模块)

示例


假设我有四个模块:

  • 模块 A
  • 模块 B
  • 模块 C(依赖于模块 A)(在构建之前始终清理它)
  • 模块 D(依赖于模块 C)

执行案例

  • 案例 1:mvn install 将构建所有四个模块 A、B、C、D
  • 案例 2:mvn install -pl A 将构建模块 A
  • 案例 3:mvn install -amd -pl A 将构建模块 A、C、D
  • 案例 4:mvn install -am -pl D 将构建模块 A、C、D

在情况 1、3、4 中:在构建之前清理 C。

情况2:跳过清洗C

替补


  • 修改我的构建脚本,首先确定是否会构建 C,然后预先运行 mvn clean -pl C
  • 添加一些插件到总是清​​理这个特定模块的模块,如果存在的话?

对于好奇的人来说,我为什么需要这个是因为我的模块 C 有一些插件,如果不对模块进行 maven clean,这些插件并不总是可以工作

【问题讨论】:

  • 哪些插件没有清理就不能工作?听起来很奇怪。
  • 我遇到了类似的问题,我正在向 maven 构建发送命令行选项,这会影响某个模块。为了使构建工作,该模块每次都需要一个干净的构建。下面的第一个答案解决了这个问题。

标签: maven module multi-module


【解决方案1】:

从此链接https://maven.apache.org/plugins/maven-clean-plugin/usage.html

以下 XML 将强制清理项目。

<build>
<plugins>
  <plugin>
    <artifactId>maven-clean-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
      <execution>
        <id>auto-clean</id>
        <phase>initialize</phase>
        <goals>
          <goal>clean</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>
</build>

Maven XML 一如既往的简洁:)

【讨论】:

    【解决方案2】:

    Create a build profile 并将 clean 插件的执行标记为 &lt;skip&gt;true&lt;/skip&gt;,用于您不想在此构建配置文件中清理的模块

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-clean-plugin</artifactId>
            <version>2.5</version>
            <configuration>
               <skip>true</skip>
            </configuration>
    </plugin>
    

    【讨论】:

    • 谢谢吉格。即使我认为我需要相反,但我认为我得到了方向。让我尝试从 maven-install-plugin 调用 maven-clean-plugin。
    • 你不能那样做 AFAIK,你可以从 install 阶段绑定 clean 的执行
    猜你喜欢
    • 2022-11-25
    • 1970-01-01
    • 2015-01-23
    • 2010-10-20
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多