Create an account

Very important

  • To access the important data of the forums, you must be active in each forum and especially in the leaks and database leaks section, send data and after sending the data and activity, data and important content will be opened and visible for you.
  • You will only see chat messages from people who are at or below your level.
  • More than 500,000 database leaks and millions of account leaks are waiting for you, so access and view with more activity.
  • Many important data are inactive and inaccessible for you, so open them with activity. (This will be done automatically)


Thread Rating:
  • 362 Vote(s) - 3.42 Average
  • 1
  • 2
  • 3
  • 4
  • 5
"Unresolved reference: implementation" by using subprojects in kotlin-gradle

#1
I want to split my project into subprojects. The default Gradle setting from the IntelliJ IDE is:

```kotlin
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
kotlin("jvm") version "1.3.50"
}

group = "project"
version = "0.0.1-SNAPSHOT"

repositories {
mavenCentral()
}

dependencies {
implementation(kotlin("stdlib-jdk8"))
}

tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = "1.8"
}
```

That setting compiles. ButI don't want repeat that code in every subproject. So I changed the *build.gradle.kts* to

```kotlin
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

subprojects {
plugins {
kotlin("jvm") version "1.3.50"
}

group = "project"
version = "0.0.1-SNAPSHOT"

repositories {
mavenCentral()
}

dependencies {
implementation(kotlin("stdlib-jdk8"))
}

tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = "1.8"
}
}
```

but I get the exception:

> e: C:\[...]\build.gradle.kts:1:12: Unresolved reference: jetbrains e:
> C:\[...]\build.gradle.kts:16:9: Unresolved reference: implementation
> e: C:\[...]\build.gradle.kts:19:20: Unresolved reference:
> KotlinCompile e: C:\[...]\build.gradle.kts:19:35: Type mismatch:
> inferred type is () -> Unit but Class<TypeVariable(S)!>! was expected
> e: C:\[...]\build.gradle.kts:20:9: Unresolved reference: kotlinOptions
>
> FAILURE: Build failed with an exception.
>
> * Where: Build file 'C:\[...]\build.gradle.kts' line: 1
>
> * What went wrong: Script compilation errors:
>
> Line 01: import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
> ^ Unresolved reference: jetbrains
>
> Line 16: implementation(kotlin("stdlib-jdk8"))
> ^ Unresolved reference: implementation
>
> Line 19: tasks.withType<KotlinCompile> {
> ^ Unresolved reference: KotlinCompile
>
> Line 19: tasks.withType<KotlinCompile> {
> ^ Type mismatch: inferred type is () -> Unit but Class<TypeVariable(S)!>! was expected
>
> Line 20: kotlinOptions.jvmTarget = "1.8"
> ^ Unresolved reference: kotlinOptions
>
> 5 errors
>
> * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
>
> * Get more help at

[To see links please register here]

>
> BUILD FAILED in 1s

I think there is an easy syntax error, but I can't find it.
Reply

#2
Is important to define the repositories in `settings.gradle.kts (project)` so that the dependencies of the subprojects are recognized.

## settings.gradle.kts (project) ##

pluginManagement {
repositories {
maven("https://dl.bintray.com/kotlin/kotlin-eap")
mavenCentral()
maven("https://plugins.gradle.org/m2/")
}
}
rootProject.name = "project"

include("app")
___

## build.gradle.kts (project) ##

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
java
kotlin("jvm") version "1.4-M3" apply false
}

subprojects {
apply {
plugin("org.jetbrains.kotlin.jvm")
}

repositories {
maven("https://dl.bintray.com/kotlin/kotlin-eap")
mavenCentral()
}

val implementation by configurations

dependencies {
implementation(kotlin("stdlib-jdk8"))
}

tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = "1.8"
}
}

___

To define plugins for each submodule separately use the lambda `apply { plugin("pluginId") }`

## build.gradle.kts (:app) ##

apply {
plugin("org.jetbrains.kotlin.jvm")
}

dependencies {
implementation(kotlin("stdlib-jdk8"))
}

GL

Reply

#3
Not sure how you're not also getting an error by nesting the `plugins { }` block under `subprojects { }` As stated in [Limitations of the plugins DSL](

[To see links please register here]

):

> The `plugins {}` block must also be a top level statement in the buildscript. It cannot be nested inside another construct (e.g. an if-statement or for-loop).

So to fix your issues, move the `plugins {}` to the top and imperatively apply the plugins in the `subprojects {}` block:


import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
kotlin("jvm") version "1.3.50" apply false
}

subprojects {
apply {
plugin("org.jetbrains.kotlin.jvm")
}

group = "project"
version = "0.0.1-SNAPSHOT"

repositories {
mavenCentral()
}

val implementation by configurations

dependencies {
implementation(kotlin("stdlib-jdk8"))
}

tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = "1.8"
}
}

You can read more about the `apply false` part in the [Method details](

[To see links please register here]

) of `PluginDependenciesSpec` which is the _type_/scope of the `plugins {}` block.

You can read more about the `val implementation by configurations` part in the [Understanding what to do when type-safe model accessors are not available](

[To see links please register here]

)
Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

©0Day  2016 - 2023 | All Rights Reserved.  Made with    for the community. Connected through