java - Gradle对类二进制目录的依赖

标签 java intellij-idea gradle

有没有一种方法可以在包含二进制(sourceSet)文件的目录上声明某个.class的编译时和运行时依赖项?我的问题是我在一个构建任务中生成了它们,但是从IDE运行/调试时我需要访问它们。

当前,我的 sourceSets 文件的build.gradle部分如下所示:

sourceSets {
    library {
        java {
            srcDir 'src/library'
            srcDir 'src/asm'
            srcDir 'src/parsing'

            runtimeClasspath += library.resources
        }
        resources {
            srcDir "${buildDir}/dyvilbin"

            include '**/*.dyo', '**/*.class'
        }
    }

    compiler {
        java {
            srcDir 'src/compiler'
            compileClasspath += library.compileClasspath
            runtimeClasspath += library.runtimeClasspath
        }
        resources {
            srcDir 'src/resources'

            include '**/*.properties'
        }
    }

    repl {
        java {
            srcDir 'src/repl'
            compileClasspath += compiler.compileClasspath
            runtimeClasspath += compiler.runtimeClasspath
        }
    }
}

不幸的是,使用gradle idea,我的IntelliJ项目可以编译并启动,但是在运行时无法解析build/dyvilbinsrc/resources目录中的类和文件(ClassNotFoundException)。

最佳答案

我设法自己使用dependencies找到了一个解决方案:

dependencies {
    // ...

    runtime files("$buildDir/dyvilbin") {
        builtBy 'someCompilerTask'
    }
}

为了将输出文件包括在Jar发行版中,我将此代码段添加到了Jar任务中:
task buildREPL(type: Jar, dependsOn: 'someOtherTask') {
    from sourceSets.repl.output

    from("$buildDir/dyvilbin") {
        include '**/*.dyo', '**/*.class'
    }

    // ...
}

关于java - Gradle对类二进制目录的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33744129/

相关文章:

java - Windows 10 Java - 包 lombok 不存在

java - 从Gradle中删除Play服务 map 实现

java - Cucumber-jvm线程安全吗?

安卓工作室 "No tests were found"

java - 在 JavaFX 2 中将工具栏按钮设置为方形且大小相同

java - 使用 Spring Kafka 在单个事务中写入两个 Kafka 主题

将 fxml 加载节点添加为子节点时未应用 JavaFX 样式表

java - 在 Java 编程中使用模块

android - 如何格式化 strings.xml 中的长文本?

java - 如何获取 'news_base'表的id?