Search code examples
gradleliferayliferay-dxp

Could not find method compileOnly with Gradle 4.3.1


In Liferay Developer Studio 3.1.2 I created a "New > Liferay Workspace Project".

Inside it, I created a "New > Liferay Module Project".

Here is how it looks:

enter image description here

Problem: There is no Gradle right-click menu on the module project.

When running Gradle from command line I get:

$ gradle --version

------------------------------------------------------------
Gradle 4.3.1
------------------------------------------------------------

Build time:   2017-11-08 08:59:45 UTC
Revision:     e4f4804807ef7c2829da51877861ff06e07e006d

Groovy:       2.4.12
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_151 (Oracle Corporation 25.151-b12)
OS:           Linux 4.4.0-101-generic amd64

$ gradle build
Starting a Gradle Daemon (subsequent builds will be faster)

FAILURE: Build failed with an exception.

* Where:
Build file '/home/nico/training-workspace/training/modules/doc-media-fragment/build.gradle' line: 2

* What went wrong:
A problem occurred evaluating root project 'doc-media-fragment'.
> Could not find method compileOnly() for arguments [{group=org.osgi, name=org.osgi.core, version=6.0.0}] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

What did I do wrong?
How to fix the problem?

The build.gradle at the root of the Liferay workspace is empty, and below is the build.gradle at the root of the Liferay module:

dependencies {
    compileOnly group: "org.osgi", name: "org.osgi.core", version: "6.0.0"
    compileOnly group: "org.osgi", name: "org.osgi.service.component.annotations", version: "1.3.0"
}

Solution

  • Create settings.gradle and add following.

    buildscript {
      dependencies {
          classpath group: "com.liferay", name: "com.liferay.gradle.plugins.workspace", version: "1.5.0"
          classpath group: "net.saliman", name: "gradle-properties-plugin", version: "1.4.6"
          classpath group: "com.liferay", name: "com.liferay.gradle.plugins", version: "latest.release"
      }
    
      repositories {
          maven {
              url "https://cdn.lfrs.sl/repository.liferay.com/nexus/content/groups/public"
          }
      }
    }
    
    apply plugin: "net.saliman.properties"
    
    apply plugin: "com.liferay.workspace"
    

    settings.gradle typically contain the minimal liferay gradle plugin to execute build and deploy liferay modules. I've pasted this in answer. Also give permission to your gradlew in liferay workspace root. chmod 777 training/gradlew