groovy - 是否可以创建一个无需编译即可在脚本中使用的 Groovy 包?

标签 groovy

我正在使用 groovy 作为一种独立的脚本语言(而不是编译它)并且正在努力解决如何 使用 package 关键字构建多个文件,但仍然能够将它们 import 文件。这方面的一个例子如下:

目录结构:

+-- Project
    +-- Example.groovy
    +-- ExampleTest.groovy

使用当前设置,没有任何 package 关键字,我可以有以下内容:

// Example.groovy
class Example {
    String message

    def Example(input = "placeholder") {
        this.message = input
    }
}

//ExampleTest.groovy
import Example

class ExampleTest extends GroovyTestCase {
    void testInitialiserWithoutArg() {
        def object = new Example()
        assertEquals(object.message, "placeholder")
    }

    void testInitialiserWithArg() {
        def object = new Example("test")
        assertEquals(object.message, "test")
    }
}

有了这个,我可以在项目目录中添加一个脚本来使用示例类或运行测试 在命令行上使用 groovy ExampleTest.groovy(groovy bin 在 PATH 中)。

然后我如何将 Example 类放入包中,以便脚本可以导入 示例类,我可以在命令行上运行单元测试吗?例如:

+-- Project
    +-- some
    |   +-- random
    |       +-- main
    |       |   +-- Example.groovy
    |       +-- test
    |           +-- ExampleTest.groovy
    +-- UseExample.groovy

我将 package some.random 添加到 Example.groovyExampleTest.groovy 但即使 Example.groovyExampleTest.groovy 就在 /Project/some/random 目录中,我不能 似乎弄清楚了如何在 ExampleTest.groovy导入 Example 类来运行测试 命令行或如何在单独的脚本中导入整个 some.random 包,例如 UseExample.groovy

这是可能的还是我必须先编译包才能使用它?

最佳答案

你必须配置你的ide来启动/测试你的项目。如果你想用 bin/groovy 来做,那么这里有一个简单的命令行:

java.exe -classpath ".\embeddable\groovy-all-2.4.11.jar;.\my\test;.\my\main" groovy.ui.GroovyMain .\my\test\pack\Test.groovy 

哪里:

  • .\embeddable\groovy-all-2.4.11.jar

    groovy 库的路径

  • .\my\test

    测试类/脚本的路径

  • .\my\main

    主要类/脚本的路径

  • groovy.ui.GroovyMain

    groovy 脚本启动器/加载器

  • .\my\test\pack\Test.groovy

    将要执行的入口点脚本。 即使它在类路径中,您也必须指定完整路径或相对于当前目录路径。

文件结构:

  • 我的
    • 主要
      • 打包
        • A.groovy
    • 测试
      • 打包
        • 测试.groovy

A.groovy

package pack

public class A{
    def f(p){
        println p
    }
}

测试.groovy

package pack

new A().f("hello")

关于groovy - 是否可以创建一个无需编译即可在脚本中使用的 Groovy 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44195979/

相关文章:

groovy - 传递 Map 和使用 `body.resolveStrategy = Closure.DELEGATE_FIRST` 有什么区别

java - 在 Groovy 中将整数转换为 BigDecimal

java - groovy 是否有一种简单的方法来获取没有扩展名的文件名?

java - 将列表作为参数传递给 Groovy BuilderSupport createNode

groovy - 如何从构建主体运行自定义gradle任务

grails - 如何在 Grails 中获取请求 URI?

grails - 集成测试Grails REST Controller

data-binding - 数据绑定(bind)多端关联

jenkins - 脚本化管道设置和访问环境变量

spring - 无法在spring boot中启动嵌入式Tomcat