运行java主类的Groovy脚本
我有下面的代码的主要类,我正试图运行与gradle。我在下面附上了java和gradle脚本的示例主类运行java主类的Groovy脚本,java,ant,groovy,gradle,Java,Ant,Groovy,Gradle,我有下面的代码的主要类,我正试图运行与gradle。我在下面附上了java和gradle脚本的示例主类 public class Hello { public static void main(String[] args) throws IOException { System.out.println("This is file system watch service"); Path dir = Paths.get("c:\\sid\\"); Wa
public class Hello {
public static void main(String[] args) throws IOException {
System.out.println("This is file system watch service");
Path dir = Paths.get("c:\\sid\\");
WatchService service = FileSystems.getDefault().newWatchService();
WatchKey key = dir.register(service, ENTRY_CREATE);
System.out.println("Watching directory: "+dir.toString());
//file creation logic
while(true) {
for (WatchEvent<?> event: key.pollEvents()) {
WatchEvent.Kind<?> kind = event.kind();
if (kind == OVERFLOW) {
continue;
}
WatchEvent<Path> ev = (WatchEvent<Path>)event;
Path filename = ev.context();
}
}
}
}
试试这个
javaexec {
main = 'com.pack.YourClass'
classpath(sourceSets.src.output.classesDir, sourceSets.src.compileClasspath)
args(arg1, arg2)
}
您需要使用
Hello
class执行代码,有什么特殊原因吗?您可以将Hello
类的内容直接添加到build.gradle
(甚至是单个方法-main的内容)并直接从脚本运行。实际上,我正在使用一个具有连接相关逻辑的java工具。我有这个代码在单独的gradle项目。我正在做一些定制任务来运行bamboo集成并运行这个类,这就是为什么我不想逐渐加入这个类。实际上,我想将java作为后台进程运行,所以不使用javaExec调用。并尝试使用ant或groovy进程来实现
task hello << {
ant.java(classpath:'sourceSets.main.runtimeClasspath.asPath', classname:'com.test.gradle.Hello.class')
ant.echo('Done')
}
it is generating below exception
[ant:java] Could not find com.test.gradle.Hello.class. Make sure you have it in
your classpath
at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:13
8)
at org.apache.tools.ant.taskdefs.Java.run(Java.java:771)
at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:221)
at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:135)
at org.apache.tools.ant.taskdefs.Java.execute(Java.java:108)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
at groovy.util.AntBuilder.performTask(AntBuilder.java:319)
at groovy.util.AntBuilder.nodeCompleted(AntBuilder.java:264)
at org.gradle.api.internal.project.ant.BasicAntBuilder.nodeCompleted(Bas
icAntBuilder.java:72)
at groovy.util.BuilderSupport.doInvokeMethod(BuilderSupport.java:147)
at groovy.util.AntBuilder.doInvokeMethod(AntBuilder.java:203)
at org.gradle.api.internal.project.ant.BasicAntBuilder.doInvokeMethod(Ba
sicAntBuilder.java:87)
at groovy.util.BuilderSupport.invokeMethod(BuilderSupport.java:64)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaC
lassSite.java:45)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSi
teArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
llSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
llSite.java:116)
at build_1dcr9mg141bsc4tjjgplovccq0$_run_closure2.doCall(C:\Users\sumit\
workspace1\gradleTest\build.gradle:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:
90)
javaexec {
main = 'com.pack.YourClass'
classpath(sourceSets.src.output.classesDir, sourceSets.src.compileClasspath)
args(arg1, arg2)
}