首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Gradle Kotlin-DSL添加本地资源?

如何使用Gradle Kotlin-DSL添加本地资源?
EN

Stack Overflow用户
提问于 2018-11-27 21:08:55
回答 1查看 8.3K关注 0票数 6

我试着用kotlin DSL测试第5级。

我创建了一个库,并构建了如下所示:

代码语言:javascript
复制
Hasans-Air:blogiclib h_ajsf$ gradle init --type=kotlin-library

Starting a Gradle Daemon, 1 busy Daemon could not be reused, use --status for details

Select build script DSL:

1: groovy

2: kotlin

Enter selection (default: kotlin) [1..2] 2

Project name (default: blogiclib): 

Source package (default: blogiclib): 

**BUILD SUCCESSFUL** in 16s

2 actionable tasks: 2 executed

Hasans-Air:blogiclib h_ajsf$ ls

build.gradle.kts gradlew settings.gradle.kts

gradle gradlew.bat src

Hasans-Air:blogiclib h_ajsf$ code .

Hasans-Air:blogiclib h_ajsf$ gradle build

然后我将输出文件生成为:build\libs\blogiclib.jar

生成的Library.kt文件是:

代码语言:javascript
复制
package blogiclib

class Library {
    fun someLibraryMethod(): Boolean {
        return true
    }
}

生成的build.gradle.kts是:

代码语言:javascript
复制
plugins {
    id("org.jetbrains.kotlin.jvm").version("1.3.10")
}

repositories {
    jcenter()
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    testImplementation("org.jetbrains.kotlin:kotlin-test")
    testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
}

然后,我生成了一个kotlin应用程序,并对其进行了如下测试:

代码语言:javascript
复制
Hasans-Air:gradle h_ajsf$ gradle init --type=kotlin-application

Starting a Gradle Daemon (subsequent builds will be faster)

Select build script DSL:

1: groovy

2: kotlin

Enter selection (default: kotlin) [1..2] 2

Project name (default: gradle): blogic

Source package (default: blogic): 

**BUILD SUCCESSFUL** in 25s

2 actionable tasks: 2 executed

Hasans-Air:gradle h_ajsf$ ls

build.gradle.kts gradlew settings.gradle.kts

gradle gradlew.bat src

Hasans-Air:gradle h_ajsf$ code .

Hasans-Air:gradle h_ajsf$ gradle run
**BUILD SUCCESSFUL** in 6m 4s

3 actionable tasks: 3 executed

Hasans-Air:gradle h_ajsf$ gradle run

**> Task :run**

Hello world.

然后,我将先前生成的lib blogiclib.jar添加到文件夹中:main\resources

并将我的App.kt文件设置为:

代码语言:javascript
复制
package blogic

import blogiclib.LibraryKt

class App {
    val greeting: String
        get() {
            return "Hello world."
        }
}

fun main(args: Array<String>) {
    println("${App().greeting} = someLibraryMethod()")
}

它的build.gradle.kts是根据我对这里的理解得出的:

代码语言:javascript
复制
plugins {
    id("org.jetbrains.kotlin.jvm").version("1.3.10")
    application
}

repositories {
    jcenter()
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    testImplementation("org.jetbrains.kotlin:kotlin-test")
    testImplementation("org.jetbrains.kotlin:kotlin-test-junit")

}

application {
    mainClassName = "blogic.AppKt"
}

task<JavaCompile>("compile") {
    source = fileTree(file("src/main/resources/blogiclib.jar"))
}

但是在编译时,我得到了以下错误:

Hasans: gradle h_ajsf$ gradle运行e: h_ajsf$ (6,8):未解决的引用: blogiclib **> Task:h_ajsf$ FAILED ** FAILURE: Build,但有异常。*出了什么问题:任务执行失败:编译failed‘。>编译错误。有关更多详细信息,请参见日志* Try: Run with **--stacktrace*选项,以获取堆栈跟踪。使用**--info**或**-调试**选项运行,以获得更多日志输出。与**-扫描*一起运行以获得完整的洞察力。*在此构建中使用了***不推荐的Gradle特性,这使得它与Gradle 6.0不兼容。使用参见警告 **构建失败**在1s2可操作的任务中:2已执行

更新

关于所收到的评论,我做了以下几点:

  1. 将库文件移动到文件夹src/main/libs
  2. 将以下代码添加到build.gradle.kts中: 配置{ create("externalLibs") } 依赖项{ "externalLibs"(files("src/main/libs/blogiclib.jar")) }

而不是:

代码语言:javascript
复制
task<JavaCompile>("compile") {
    source = fileTree(file("src/main/resources/blogiclib.jar"))
}

但仍然有同样的错误:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-01 00:28:22

可以将所有jar文件包括在某些文件夹中,如下所示:

代码语言:javascript
复制
dependencies {
    implementation(fileTree("libs/compile"))
    compileOnly(fileTree("libs/provided"))
}

或者,选择特定的文件:

代码语言:javascript
复制
repositories {
    flatDir {
        dirs("libs/compile")
        dirs("libs/provided")
    }
}

dependencies {
    implementation(":gson-2.8.5")
    compileOnly(":javaee-api-8.0")
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53508161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档