Re: Running groovy programs

Andriy Rysin <[email protected]>
Newsgroups gmane.comp.lang.groovy.user
Message-ID <CAOZT1o02kog4zDsPxBQA3+9e13o3n3exLfQ1aWtjovSUKqmPtQ@mail.gmail.com>
So it looks like groovy picks up groovy scripts from the current directory
by default.
So the users can't just do "/path/to/scripts/TagText.groovy <myfile>" any
more.
They would have to do:
cd /path/to/scripts/
./TagText.groovy <myfile>

or they would have to invoke groovy explicitly:
groovy -cp /path/to/scripts /path/to/scripts/TagText.groovy <myfile>



On Fri, Mar 4, 2022 at 7:04 AM Jochen Theodorou <[email protected]> wrote:

> On 12.02.22 17:03, Andriy Rysin wrote:
> > Hi all
> >
> > I have a question about running/packaging groovy programs.
> > I have a small suite of (commandline) NLP tools
> > (https://github.com/brown-uk/nlp_uk
> > <https://github.com/brown-uk/nlp_uk>) that is often used by
> > non-developers (NLP students, researches etc).
> > When the scripts where simple it was very easy to run them:
> > 1) install groovy
> > 2) git clone/pull
> > 3) then you run scripts from anywhere with simple
> > ..../nlp_uk/src/main/groovy/org/nlp_uk/tools/TagText.groovy -i
> > input_file.txt
> >
> > The dependencies are pulled via grape, the command is simple to run and
> > update.
> >
> > Now scripts got some common parallelization code and I extracted common
> > code into TextUtils but to keep things still simple I just use:
> >    Eval.me(new File("$SCRIPT_DIR/TextUtils.groovy") .....
> > for a simple "include" hack.
>
> Let us assume TagText.groovy and TextUtils.groovy are in
> nlp_uk/src/main/groovy/org/nlp_uk/tools. Let us further assume, that
> TextUtils.groovy is a class and has a method extractTags(). Then you can
> do just "new TextUtils().extractTags()" in TagText and Groovy will try
> to resolve the class TextUtils by itself, leading to loading (and
> compiling on the fly) TextUtils.groovy and to execute the extractTags
> method from there.
>
> So all you need to do is to put the TextUtils file in a path Groovy can
> find (on the classpath) as well as make it a class. If you want to work
> with packages, then the file needs to be in a sub directory that fits to
> the package naming scheme.
>
> This will also pick up a change in TextUtils and TagText, since nothing
> is precompiled.
>
> If you do not want to work with instances of TextUtils, you can make the
> methods static and then do something like TextUtils.extractTags(). or
> you do "import static TextUtils.extractTags" to import the method and
> then just call it with "extractTags()"
>
> does this help?
>
> bye Jochen
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.