Как использовать Groovy-maven-plugin с Groovy 3.0.x?

Согласно документации Groovy-maven-plugin можно указать конкретную версию Groovy, которая будет использоваться в сборке maven. Это работает с версиями groovy-all до 2.4.9, но версия 2.5.0 или выше нарушит сборку следующим сообщением, когда я вызываю "mvn validate":

[ОШИБКА] Не удалось выполнить цель org.codehaus.gmaven:groovy-maven-plugin:2.1.1: выполнить (по умолчанию) в проекте groovy3demo: выполнить цель по умолчанию для цели org.codehaus.gmaven:groovy-maven-plugin:2.1.1: выполнить не удалось: плагин org.codehaus.gmaven:groovy-maven-plugin:2.1.1 или одна из его зависимостей не может быть разрешена: не удалось найти артефакт org.codehaus.groovy:groovy-all:jar:3.0.6 в центральный (https://repo.maven.apache.org/maven2) -> [Справка 1]

Причина в том, что здесь в mavencentral репо нет "groovy-all-3.0.6.jar". По-видимому, 'groovy-all-.jar больше не развертывается с версии 2.5.0-beta3, только исходники и javadoc. Версия 2.4.9 кажется последней успешной версией.

Итак, мой вопрос: как я могу использовать Groovy 3.x в моей сборке maven?

Спасибо за любую подсказку.

Вот мой pom.xml, и (помимо установки maven) вам не нужно больше, чтобы воспроизвести проблему:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>de.zaphodbeeblebrox</groupId>
  <artifactId>groovy3demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>groovy-maven-plugin</artifactId>
        <version>2.1.1</version>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>3.0.6</version> <!-- 2.4.9 is the latest successful version -->
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <phase>validate</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <source>
                println '*** Generated Version Numbers and Timestamps ***'
                println '  [...]'
              </source>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

2 ответа

Решение

Из-за изменений, внесенных в groovy v2.5 и описанных в примечаниях к выпуску для Groovy 2.5 и GROOVY-8750, теперь вы должны использовать либо базовый пакет groovy, либо необходимые модули groovy, например:

<plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>groovy-maven-plugin</artifactId>
    <version>2.1.1</version>
    <dependencies>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-xml</artifactId>
            <version>3.0.6</version>
        </dependency>
    </dependencies>
    ...
</plugin>

Для работы со всеми модулями Groovy вы также можете использовать зависимость Groovy-all.

       <plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>groovy-maven-plugin</artifactId>
    <version>2.1.1</version>
    <dependencies>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>3.0.7</version>
            <type>pom</type>
        </dependency>
    </dependencies>
 </plugin>
Другие вопросы по тегам