【问题标题】:How can I use my compiled classes in doLast gradle build?如何在 doLast gradle build 中使用我编译的类?
【发布时间】:2019-02-04 16:22:48
【问题描述】:

我有一个项目my_project。我想编译它,编译后我想访问该项目中的一些类,例如创建新对象MyDataClass 并打印出来。

这就是我在 build.gradle 中尝试做的事情:

doLast {
    MyDataClass toPrint = new MyDataClass()
    System.out.println(toPrint)
}

我想我必须以某种方式在 buildscript 块中为 my_project 指定类路径,但我真的是 gradle 新手,我不知道该怎么做。

感谢您的帮助。

【问题讨论】:

    标签: java gradle


    【解决方案1】:

    你应该可以从 sourceSets.gradlebuilds.runtimeClasspath 得到你需要的东西

    假设您的 sourceSets 已正确声明。 https://docs.gradle.org/current/dsl/org.gradle.api.tasks.SourceSet.html

    我必须查看您的 build.gradle 才能更好地了解您要完成的工作,但创建一个 java 类并从 JavaExec 任务调用它可能更容易

    task(runApplication,  type: JavaExec) {  
        main = 'com.druudik.MyNewDataClass' //need main method in this java file  
        classpath = sourceSets.gradlebuilds.runtimeClasspath  
        args 'arg1', 'arg2'  
    }
    

    【讨论】:

    • 我正在寻找一些示例,但我找不到任何示例。如何访问课程?
    • 我更新了帖子,提供了一个您可能会觉得有帮助的示例。如果没有,我需要更多信息
    • 我想像示例中那样使用我的项目的类,而不仅仅是调用 main 方法。换句话说,如果可能的话,我想使用 new 关键字创建我的类的新对象,然后像在普通的 groovy 代码中一样使用它。
    • 你看过这篇文章吗? stackoverflow.com/questions/26314709/…
    • 这绝对有帮助,但问题是我想使用将在我的脚本运行期间编译的类。换句话说,在 build.gradle 中,我想编译我的代码,创建 jar,然后使用我刚刚为 doLast 任务创建的那个 jar。我的 jar 在脚本启动时不存在,因为它将被创建。
    猜你喜欢
    • 2018-02-14
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多