无法使用 Gradle 4.3.1 找到方法 compileOnly

Could not find method compileOnly with Gradle 4.3.1

在 Liferay Developer Studio 3.1.2 中,我创建了一个 "New > Liferay Workspace Project"。

在里面,我创建了一个"New > Liferay Module Project"。

外观如下:

问题:模块项目没有Gradle右键菜单。

当从命令行 运行 Gradle 时,我得到:

$ 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.

我做错了什么?
如何解决问题?

Liferay工作区根目录下的build.gradle是空的,下面是Liferay模块根目录下的build.gradle

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"
}

创建 settings.gradle 并添加以下内容。

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 通常包含最小的 liferay gradle 插件来执行构建和部署 liferay 模块。我已经在回答中粘贴了这个。还要在 liferay 工作区根目录中授予 gradlew 权限。 chmod 777 training/gradlew

您可以通过导航到 node_modules/react-native-maps/lib/android/build.gradle 并更改这些行来解决此问题

compileOnly "com.facebook.react:react-native:+"
implementation "com.google.android.gms:play-services-base:$googlePlayServicesVersion"
implementation "com.google.android.gms:play-services-maps:$googlePlayServicesVersion"
implementation "com.google.maps.android:android-maps-utils:$androidMapsUtilsVersion"

provided "com.facebook.react:react-native:+"
compile "com.google.android.gms:play-services-base:$googlePlayServicesVersion"
compile "com.google.android.gms:play-services-maps:$googlePlayServicesVersion"
compile "com.google.maps.android:android-maps-utils:$androidMapsUtilsVersion"

并查看项目是否构建。