Fix resources processing configuration

* Add resources processing to the K/N compilations

* Use a proper resources output path (composed from target + compilation
  rather than just compilation name)

* Fix incorrect reassignment of the resources directory
This commit is contained in:
Sergey Igushkin
2018-09-24 22:15:25 +03:00
parent fef61eca51
commit 65e3559c09
11 changed files with 29 additions and 7 deletions
@@ -163,6 +163,23 @@ class NewMultiplatformIT : BaseGradleIT() {
}
}
@Test
fun testResourceProcessing() = with(Project("sample-lib", gradleVersion, "new-mpp-lib-and-app")) {
val targetsWithResources = listOf("jvm6", "wasm32", nativeHostTargetName)
val processResourcesTasks =
targetsWithResources.map { ":${it}ProcessResources" }
build(*processResourcesTasks.toTypedArray()) {
assertSuccessful()
assertTasksExecuted(*processResourcesTasks.toTypedArray())
targetsWithResources.forEach {
assertFileExists("build/processedResources/$it/main/commonMainResource.txt")
assertFileExists("build/processedResources/$it/main/${it}MainResource.txt")
}
}
}
@Test
fun testSourceSetCyclicDependencyDetection() = with(Project("sample-lib", gradleVersion, "new-mpp-lib-and-app")) {
setupWorkingDir()
@@ -125,11 +125,6 @@ abstract class AbstractKotlinTargetConfigurator<KotlinTargetType : KotlinTarget>
) {
val project = compilation.target.project
compilation.output.setResourcesDir(Callable {
val classesDirName = "resources/" + compilation.compilationName
File(project.buildDir, classesDirName)
})
val resourcesTask = project.tasks.maybeCreate(compilation.processResourcesTaskName, ProcessResources::class.java)
resourcesTask.description = "Processes $resourceSet."
DslObject(resourcesTask).conventionMapping.map("destinationDir") { compilation.output.resourcesDir }
@@ -10,13 +10,14 @@ import org.gradle.api.NamedDomainObjectFactory
import org.gradle.api.Project
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import java.util.concurrent.Callable
interface KotlinCompilationFactory<T: KotlinCompilation> : NamedDomainObjectFactory<T> {
val itemClass: Class<T>
}
private fun KotlinTarget.createCompilationOutput(name: String) =
KotlinCompilationOutput(project, project.buildDir.resolve("processedResources/$name"))
KotlinCompilationOutput(project, Callable { project.buildDir.resolve("processedResources/$targetName/$name") })
class KotlinCommonCompilationFactory(
val target: KotlinOnlyTarget<KotlinCommonCompilation>
@@ -269,7 +269,7 @@ class KotlinNativeCompilation(
override val target: KotlinNativeTarget,
name: String,
override val output: SourceSetOutput
) : AbstractKotlinCompilation(target, name) {
) : AbstractKotlinCompilation(target, name), KotlinCompilationWithResources {
private val project: Project
get() = target.project
@@ -369,6 +369,8 @@ class KotlinNativeCompilation(
getBinary(NativeOutputKind.valueOf(kind.toUpperCase()), NativeBuildType.valueOf(buildType.toUpperCase()))
// Naming
override val processResourcesTaskName: String
get() = disambiguateName("processResources")
val linkAllTaskName: String
get() = lowerCamelCaseName(