Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IntelliJ + Groovy + Spock: no Groovy library is defined for module

I have been trying to create a Groovy project with Spock testing in IntelliJ IDEA.

Here are steps that I followed:

  1. Created Groovy project and added Maven support.
  2. Added Spock dependencies and plugin. I am using POM very similar to this one: https://github.com/mariuszs/java-spock-test-sample/blob/master/pom.xml
  3. Due to conflicting Groovy dependency I removed Groovy 2.2 library from the Module Settings->Libraries. This allowed me to run tests.
  4. I created a Groovy class in "src/main".. but I get the error when I try to run it:

Groovyc: Cannot compile Groovy files: no Groovy library is defined for module...

I am probably missing something because I am tired of trying different configurations for half of the day.

like image 777
Daniil Shevelev Avatar asked Jan 27 '14 19:01

Daniil Shevelev


People also ask

How do I run Groovy in IntelliJ?

Add Groovy script IntelliJ IDEA opens the file in the editor. Type the following code: println("Hello, Groovy!") Press Ctrl+Shift+F10 to run the script.

Does IntelliJ support Groovy?

The Groovy plugin is bundled with IntelliJ IDEA and enabled by default. IntelliJ IDEA supports the latest stable version of Groovy and Groovy 4 syntax.

How do I create a Groovy script in IntelliJ?

To create a Groovy project go to File>New>Project: Select 'Groovy' in the left list. On the right panel click on 'Create...' button to select Groovy library. Now click on 'Next' button.


2 Answers

For fully groovy project try GMavenPlus

Sample project: https://github.com/mariuszs/groovy-maven-sample

Install GMavenPlus IntelliJ Plugin. IntelliJ dont recognize source directories src/main/groovy, configure this manually as shown below from Project Settings -> Modules window:.

groovy source code

Configuration

<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.gmavenplus</groupId>
        <artifactId>gmavenplus-plugin</artifactId>
        <version>1.5</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>testCompile</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-all</artifactId>
      <version>2.4.4</version>
    </dependency>
    <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <version>1.0-groovy-2.4</version>
        <scope>test</scope>
    </dependency>     
  </dependencies>
</project>
like image 188
MariuszS Avatar answered Sep 24 '22 15:09

MariuszS


There were two steps to fixing the (broken) project:

  1. Update the groovy-all dependency to version 2.2.1, which I had installed on my machine.
  2. In "projectName.iml" file replace

orderEntry type="library" exported="" scope="TEST" name="Maven: org.codehaus.groovy:groovy-all:2.2.1" level="project"

with this one:

<orderEntry type="library" name="groovy-2.2.1" level="application" />

This situation was caused by two factors: me being new to the IDE and the fact that things kinda-sorta work even when you mis-configure the project. I still think this Q&A might be useful to someone in the future.

like image 24
Daniil Shevelev Avatar answered Sep 25 '22 15:09

Daniil Shevelev