【问题标题】:Override the dependency version used at runtime from command-line从命令行覆盖运行时使用的依赖版本
【发布时间】:2016-07-06 08:47:18
【问题描述】:

常规:我需要从命令行执行 maven 插件,并覆盖依赖版本(插件依赖)。项目 pom 中不会定义插件。

具体:我需要在teamcity build 中执行maven-checkstyle-plugin;这个插件不会被定义在项目 pom.xml 中。我使用以下命令行:

 mvn org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check -Dencoding=UTF-8

但我需要使用最新的checkstyle 执行插件,如here 所示。

POM xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>2.17</version>
</plugin>

命令行:

mvn org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check

POM xml:

<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <version>2.17</version>
      <dependencies>
        <dependency>
          <groupId>com.puppycrawl.tools</groupId>
          <artifactId>checkstyle</artifactId>
          <version>7.0</version>
        </dependency>
      </dependencies>
    </plugin>

命令行:

?

【问题讨论】:

  • 为什么不在 pom 中定义?没有意义...在命令行上无法覆盖依赖版本。为什么需要这个?
  • 您很可能无法做到这一点。一个可能的技巧是执行预构建步骤,在其中复制目标 pom.xml 文件,增强它,将此插件配置添加到其 pluginManagement 部分,然后通过 @ 在此替代 pom 文件上执行构建987654332@ 选项(例如mvn -f enhanced-pom.xml clean install)。更好的解决方案是让企业 maven 父 pom 在哪里放置 CI 相关检查/要求,用于所有 maven 项目。

标签: java maven maven-3 maven-plugin checkstyle


【解决方案1】:

最佳做法是使用您的设置创建一个Maven profile,然后在构建 CI 时激活此配置文件。

示例配置文件:

<profiles>
<profile>
  <id>ci</id>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.17</version>
        <dependencies>
          <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>7.0</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</profile>
</profiles>

如何在 TeamCity 上启用它的示例:mvn checkstyle:check -Pci

通常将execution 部分添加到配置文件配置中,以使插件目标在特定阶段作为正常构建的一部分自动运行,但仅当通过mvn install -Pci 启用ci 配置文件时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 2013-08-31
    相关资源
    最近更新 更多