我在一个体面的 Java 项目上工作,该项目使用 Perl 脚本编写一些胶水代码。我试图弄清楚如何用 Groovy 脚本替换这些脚本,以便我们可以方便地编写脚本,但可以更好地访问多年来构建的所有 Java 代码。这是我们的项目结构的示例。
.
|____core
| |____classes
| | |____com
| | |____project
| | |____core
| | |____CoreClass.class
| |____src
| |____com
| |____project
| |____core
| |____CoreClass.java
|____scripts
| |____someScript.groovy
|____util
|____classes
| |____com
| |____project
| |____util
| |____UtilClass.class
|____src
|____com
|____project
|____util
|____UtilClass.java
(注意:util
并且core
只是项目中大约十几个类似文件夹中的两个)
我想从命令行运行someScript.groovy
,它需要能够实例化UtilClass
和CoreClass
. 我已经阅读了各种使用 Groovy 脚本设置类路径的方法,但我发现没有一种方法是合适的。
这里的重点是找到一种使用 Groovy 的方法,它比我们当前使用 Perl 的系统更容易使用。为了做到这一点,我认为我需要满足三个标准。
- 不污染系统或环境
我想让项目尽可能地独立。开发人员应该能够从源代码控制中检查项目,运行someScript.groovy
并让它知道在哪里可以找到项目中的其他类。我不想要求开发人员将 CLASSPATH 环境变量设置为指向所有项目类目录。
- 没有长命令行参数
脚本应该很容易从命令行运行。如果-cp
需要该标志,则开发人员必须键入小说才能指定我们项目中的所有各种类目录。
- 没有样板
someScript.groovy
我见过一些解决方案,包括获取类加载器的实例并指定.java
文件的路径.class
。这将使脚本编写起来过于困难和乏味。
这些标准不是绝对的。如果我不得不对其中一个稍作让步,该解决方案可能仍然有效。我们在这里使用 Eclipse,因此涉及通过 Eclipse 进行某种类型的项目配置的解决方案可能是合适的。如果需要样板代码,也许有一个 Groovy 源文件,该文件由 Eclipse 自动编译为包含必要样板代码的版本。
通过groovy someScript.groovy
或调用脚本someScript.groovy
可能是可以接受的。