我正在研究kotlin-js的例子。我用了这个sample。当我构建前端模块时(如下图所示),我无法看到 web 文件夹。但资源文件应位于 web 文件夹中。怎么了?
buildscript {
ext.kotlin_version = '1.2.30'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
group 'example'
version '1.0-SNAPSHOT'
apply plugin: 'kotlin2js'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version"
testCompile "org.jetbrains.kotlin:kotlin-test-js:$kotlin_version"
}
build.doLast {
configurations.compile.each { File file ->
copy {
includeEmptyDirs = false
from zipTree(file.absolutePath)
into "${projectDir}/web"
include { fileTreeElement ->
def path = fileTreeElement.path
path.endsWith(".js") && (path.startsWith("META-INF/resources/") || !path.startsWith("META-INF/"))
}
}
}
}
compileKotlin2Js {
kotlinOptions.outputFile = "${projectDir}/web/output.js"
kotlinOptions.sourceMap = true
}
答案 0 :(得分:0)
您的copy { ... }
数据块仅设置从compile
配置复制相关性文件,并且不会将项目资源复制到web
。 compileKotlin2Js
任务也没有,它只将已编译的Kotlin类放入该目录。
要复制main
源集的资源,您可以添加另一个copy { ... }
块,如下所示:
build.doLast {
// ...
copy {
from sourceSets.main.output.resourcesDir
into "${projectDir}/web"
}
}
请注意,如果您只复制文件,最终可能会导致上一次运行中遗留的过时输出文件(如果源目录中不存在文件,则不会从目标中删除其副本)。相反,请考虑使用compileKotlin2Js
任务的默认输出文件位置和Sync
task来同步目录,如this guide中所述(它没有提及资源;使用{{添加它们) 1}}如上所述)。如果您需要自定义输出文件名,可以use archivesBaseName
为此。