【问题标题】:Gradle: how to make JavaExec task use configuration classpath?Gradle:如何使 JavaExec 任务使用配置类路径?
【发布时间】:2015-07-08 21:46:00
【问题描述】:

问题是:我想执行一些 java 类,其中包含来自运行时配置的一些依赖项。如何做到这一点?

task runJava(type: JavaExec, dependsOn:[classes]) {
        main = 'mypackage.MyClass'
        classpath = //what should I write here to provide classes from runtime configuration?
}

【问题讨论】:

    标签: java gradle build-process


    【解决方案1】:

    您可能希望使用 Source sets 的运行时类路径,其中包括 compiled classes of your project as well as all the runtime dependencies

    task runJava(type: JavaExec, dependsOn:[classes]) {
        main = 'mypackage.MyClass'
        classpath = sourceSets.main.runtimeClasspath
    }
    

    如果您想获取特定配置的路径,您可以执行以下操作:configurations.getByName('runtime').asPath 或更短的configurations.runtime.asPath

    【讨论】:

    • 值得记住的是,调用asPath 将解析配置,因此您可能需要注意不要在配置阶段无意中最终解析配置
    • 在 Android Studio 中使用 gradle 时没有 sourceSets.main - 任何人都知道在 Android Studio 的 Gradle 版本中你必须使用什么?到目前为止我发现的唯一东西是 android.sourceSets.main 但它没有 runtimeClasspath 我什至不确定它是正确的。
    • 我收到错误:(38, 1) 评估根项目“MyProject”时出现问题。 > 无法获取 org.gradle.api.tasks.JavaExec 类型的任务“:runApp”的未知属性“sourceSets”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2019-07-14
    • 1970-01-01
    相关资源
    最近更新 更多