dan*_*doe 9 java gradle build.gradle
我有一个gradle构建脚本,目前只需通过它的main方法执行Java类即可.我想知道的是,如何在同一个类中调用静态方法,而不必通过main方法.当前的gradle代码如下:
import org.apache.tools.ant.taskdefs.condition.Os
apply plugin: 'java'
defaultTasks 'runSimple'
project.ext.set("artifactId", "test-java")
File rootDir = project.getProjectDir()
File targetDir = file("${rootDir}/target")
FileCollection javaClasspath = files("${targetDir}/tools.jar")
task(runSimple, dependsOn: 'classes', type: JavaExec) {
main = 'com.test.model.JavaTest'
classpath = javaClasspath
args 'arg1'
args 'arg2'
}
Run Code Online (Sandbox Code Playgroud)
我的Java类如下:
package com.test.model;
public class JavaTest {
public static void main(String[] args) throws Exception {
System.out.println("In main");
anotherMethod(args[0], args[1]);
}
public static void anotherMethod(String arg1, String arg2) {
System.out.println("In anotherMethod");
System.out.println(arg1 + " " + arg2);
}
}
Run Code Online (Sandbox Code Playgroud)
这给了我输出:
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:runSimple
In main
In anotherMethod
arg1 arg2
BUILD SUCCESSFUL
Total time: 2.344 secs
Run Code Online (Sandbox Code Playgroud)
我的问题是如何跳过main方法,并直接从gradle脚本调用方法"anotherMethod"?那么输出就是:
In anotherMethod
arg1 arg2
Run Code Online (Sandbox Code Playgroud)
谢谢
小智 -2
如果您想执行静态方法,您需要将该类添加到 Gradle 构建脚本的类路径中。
如果您的代码位于存储库中,则要将代码添加到构建脚本类路径:
buildscript {
repositories {
maven { url "${yourRepositoryURL}" }
}
dependencies {
classpath 'com.yourgroup:yourpackagename:version'
}
}
Run Code Online (Sandbox Code Playgroud)
如果您的代码是本地构建的,则要将代码添加到构建脚本类路径(我没有测试这个):
buildscript {
dependencies {
classpath files("path/to/where/the/class/files/are")
}
}
Run Code Online (Sandbox Code Playgroud)
然后您应该能够像调用其他方法一样调用该方法:
task runSimple(dependsOn: 'classes') {
doFirst() {
com.test.model.JavaTest.anotherMethod('arg1', 'arg2')
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11234 次 |
| 最近记录: |