当前位置: 首页 > 知识库问答 >
问题:

针对不同目标的不同Maven配置

裴兴学
2023-03-14

我有一个Maven项目,其中包括一个Maven插件(Liquibase Maven插件),它公开了不同的目标。其中两个目标(update和diff)需要在它们之间发生冲突的不同参数(因为两者的语义不同),因此我需要在两个目标执行中赋予Maven不同的属性。

<plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>3.4.1</version>

    <!-- This configuration is used for every goal except "diff" -->
    <configuration>
        <propertyFile>src/main/resources/liquibase.properties</propertyFile>
        <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
    </configuration>
    <executions>
        <execution>
            <id>default-cli</id>
            <goals>
                <goal>diff</goal>
            </goals>
            <!-- This configuration is used for the "diff" goal -->
            <configuration>
                <propertyFile>src/main/resources/liquibaseDiff.properties</propertyFile>
                <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
            </configuration>
        </execution>
    </executions>
</plugin>

有没有办法在Maven中为不同的目标传递不同的配置?

共有1个答案

张茂勋
2023-03-14

插件的配置可以在两个不同的位置完成:

  • 全局用于所有执行。全局配置是通过 下的 元素完成的。此配置由所有执行继承。
  • 每次执行
  • 。这是使用 下的 元素完成的。

在您的示例中,考虑以下POM:

<plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>3.4.1</version>
    <configuration>
        <!-- put the configuration here that is common to all executions -->
    </configuration>
    <executions>
        <execution>
            <id>diff</id>
            <goals>
                <goal>diff</goal>
            </goals>
            <configuration>
                <!-- put the specific configuration of the diff goal here, this will inherit from the global configuration -->
            </configuration>
        </execution>
        <execution>
            <id>update</id>
            <goals>
                <goal>update</goal>
            </goals>
            <configuration>
                <!-- put the specific configuration of the update goal here, this will inherit from the global configuration -->
            </configuration>
        </execution>
    </executions>
</plugin>
mvn liquibase:diff@diff

上面命令中的@diff引用了POM中配置的执行的唯一

将您的执行绑定到Maven生命周期的特定阶段,并让它与生命周期的正常流程一起执行。这通常是首选的解决方案。在上面的示例中,例如,我们可以在diff执行的执行块中添加一个 test ;然后Maven将在构建过程中运行测试阶段时执行它。

 类似资料:
  • 问题内容: 我正在使用不同的Maven配置文件将我的应用程序部署到不同的环境。(使用weblogic-maven-plugin,但是我认为这并不重要) 在应用程序中,我使用Spring Web Services。现在,我想根据环境更改端点。(端点在Spring的applicationContext.xml中定义) 我的想法是从属性文件中读取值。该属性文件将在Mavens软件包阶段写入(或复制)。

  • 我正在从事两个不同的项目,都使用不同的maven文件 当我在项目之间切换时,它会重新下载存储库文件夹中的所有maven依赖项,删除以前项目的依赖项 是否有任何方法可以使用两个,并为两个项目维护不同的存储库。

  • 问题内容: 我目前正在将构建过程从Ant迁移到Maven。我们的应用程序已部署到许多不同的客户,每个客户都有一组独特的依赖项和配置。我可以实现不同的配置文件以对它们进行建模,并从中构建所需的战争。但是,这是一个在编译时发生的过程。 每个版本都标记为SVN,并已上传到我们的内部Nexus存储库。我希望能够采用定义的发行版并根据配置文件对其进行重构。有没有办法做这样的事情?除了个人资料外,我还应该使用

  • 我有两个不同的工作(实际上更多,但为了简单起见,假设2)。每个作业可以与另一个作业并行运行,但同一作业的每个实例应该顺序运行(否则实例将共享彼此的资源)。 基本上,我希望这些作业中的每一个都有自己的作业实例队列。我想我可以使用两个不同的线程池作业启动程序(每个都有一个线程),并将一个作业启动程序与每个作业相关联。 在从Spring Batch Admin web UI中启动作业时,是否有一种方法可

  • 我的步骤事件有以下字段:

  • 问题内容: 假设我有类似的课程: 我想在A上过滤标准,在不同的子类属性上过滤两个过滤器,例如: 我想要做的是使用“或”子句将criteriaB和criteriaC组合在一起,例如: 我该怎么做?我在这里对API稍作绊脚石。 问题答案: 使用别名代替嵌套条件: