Hi everyone,
> My use case is that I want to run a class from a Maven artifact.
I turned my "synthesize a dummy POM" approach into a full-blown shell
script called jrun [1].
You can use it to conveniently run Java code from any remote Maven
repository. For example, to spin up the Jython REPL:
$ jrun org.python:jython-standalone
If you add the ImageJ Maven repository to your ~/.jrunrc:
[repositories]
imagej.public = https://maven.imagej.net/content/groups/public
Then you can launch ImageJ (https://imagej.net/):
$ jrun net.imagej:imagej
Or even the entire Fiji distribution of ImageJ (https://fiji.sc/), which as
of this writing consists of 346 components!
$ jrun sc.fiji:fiji:LATEST
All without explicitly downloading or installing anything apart from Maven
and this one shell script [2].
If anyone knows a better / standard / best-practices way of doing this,
please let me know! But I am pretty pumped about how convenient this is. I
hope that jrun is useful to other developers too.
Regards,
Curtis
P.S. If the Mojohaus devs are interested, perhaps we could fold in
something like this as a new goal of the exec-maven-plugin.
[1] https://github.com/ctrueden/jrun
[2] Windows users need POSIX-compliant shell, though. I did not test it yet.
--
Curtis Rueden
LOCI software architect - https://loci.wisc.edu/software
ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
On Thu, Mar 2, 2017 at 9:50 AM, Curtis Rueden <[email protected]> wrote:
> Hi everyone,
>
> Is there an easy way to download an artifact and its dependencies to a
> folder locally?
>
> * dependency:get will download a single artifact without needing a pom.xml.
> * dependency:copy-dependencies will copy the dependencies of the current
> project to a target location.
>
> But can these two functionalities be combined?
>
> My use case is that I want to run a class from a Maven artifact.
>
> The best I have come up with so far is to synthesize a dummy POM:
>
> g=org.scijava; a=scijava-common; v=RELEASE; m=org.scijava.script.ScriptREPL;
> echo "<project><modelVersion>4.0.0</modelVersion><groupId>x</grou
> pId><artifactId>x</artifactId><version>0</version><
> dependencies><dependency><groupId>$g</groupId><artifactId>$a</artifactId><
> version>$v</version></dependency></dependencies></project>" > pom.xml;
> mvn -DoutputDirectory=. dependency:copy-dependencies; rm pom.xml; java -cp
> '*' "$m"
>
> Can this be done more elegantly?
>
> Thanks,
> Curtis
>
> --
> Curtis Rueden
> LOCI software architect - https://loci.wisc.edu/software
> ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
>
>