从 pom.xml 外的命令行运行 maven 插件

问题描述

以下是 maven 的 snyk 插件设置。我已经在 pom.xml 中设置了插件。我在管道中配置了 Maven 设置。下面的配置有一个秘密的 API_TOKEN。在除认管道文件之外的任何文件中将 API_TOKEN 设置为变量都不起作用。所以我正在探索一些方法来设置和运行管道文件中的插件,即例如在 mvn 命令行中访问和运行插件 mvn my-plugin:my-goal -dplugin.property=ABC.

但我不确定如何在 build/install/deploy 命令期间调用 snyk 插件并运行。

<plugin>
                <groupId>io.snyk</groupId>
                <artifactId>snyk-maven-plugin</artifactId>
                <version>1.2.5</version>
                <executions>
                    <execution>
                        <id>snyk-test</id>
                        <phase>test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>snyk-monitor</id>
                        <phase>install</phase>
                        <goals>
                            <goal>monitor</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <apiToken>${SNYK_TOKEN}</apiToken>
                    <failOnSeverity>high</failOnSeverity>
                    <org>MDA</org>
                </configuration>
            </plugin>

解决方法

该团队刚刚发布了该插件的新版本。这是github repo

示例

<build>
  <plugins>
    <plugin>
      <groupId>io.snyk</groupId>
      <artifactId>snyk-maven-plugin</artifactId>
      <version>2.0.0</version>
      <inherited>false</inherited>
      <executions>
        <execution>
          <id>snyk-test</id>
          <goals>
            <goal>test</goal>
          </goals>
        </execution>
        <execution>
          <id>snyk-monitor</id>
          <goals>
            <goal>monitor</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <apiToken>${env.SNYK_TOKEN}</apiToken>
        <args>
          <arg>--all-projects</arg>
        </args>
      </configuration>
    </plugin>
  </plugins>
</build>

默认情况下,snyk-test 现在链接到 mvn testmonitor 默认连接到 mvn install 阶段。显然,您可以像下面这样更改它。

<executions>
   <execution>
       <phase>verify</phase>
       <id>snyk-test</id>
       <goals>
           <goal>test</goal>
       </goals>
   </execution>
   <execution>
       <phase>none</phase>
       <id>snyk-monitor</id>
       <goals>
           <goal>monitor</goal>
       </goals>
   </execution>
</executions>

第一个示例中的 API 令牌指的是环境变量。

有关详细信息,blog post 可能提供了更完整的概述。