Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gradle作为依赖项运行bat文件_Java_Eclipse_Batch File_Gradle - Fatal编程技术网

Java Gradle作为依赖项运行bat文件

Java Gradle作为依赖项运行bat文件,java,eclipse,batch-file,gradle,Java,Eclipse,Batch File,Gradle,我们有一个.bat文件用来生成一些源代码。将所有生成的.java文件放在项目中正确的位置是非常明智的 我定义了一个gradle任务,如下所示: task createPojos(type:Exec) { workingDir "$dirXsd" commandLine 'cmd', '/c', 'createPojos.bat' } 我还在build.gradle中将此任务定义为defaultTask。这是可行的,当我从命令行运行'gradle'或从Eclipse执行creat

我们有一个.bat文件用来生成一些源代码。将所有生成的.java文件放在项目中正确的位置是非常明智的

我定义了一个gradle任务,如下所示:

task createPojos(type:Exec) {
    workingDir "$dirXsd"
    commandLine 'cmd', '/c', 'createPojos.bat'
}
我还在build.gradle中将此任务定义为defaultTask。这是可行的,当我从命令行运行'gradle'或从Eclipse执行createPojo任务时,它会按预期生成代码。但是我想将它定义为一个依赖项,这样当我从Eclipse执行Gradle-->Refresh All时,它将运行上面运行.bat的任务

我试图找出如何作为依赖项运行createPojo任务,但失败了。我一定不能很好地理解Gradle的概念——您可以指定一个自定义任务作为依赖项吗?不是对另一个任务的依赖关系,而是build.gradle文件的依赖关系部分?当我刷新所有数据时,我尝试的每件事都会给我一些渐变错误。这里有一个例子:

dependencies {
    createPojos() // how do I invoke createPojos from here?
}
A problem occurred evaluating project ':WebTransport'.
> Could not find method createPojos() for arguments [] on project ':WebTransport'.

通常,您可以通过调用特定任务实例的
execute
方法来运行任务。但这绝对不是调用任务的方式

如果需要在
dependencies
块中调用
createPojos()
,请将其逻辑移动到
build.gradle
文件中定义的方法,并在
dependencies
和任务操作中直接调用该方法

您知道每次调用gradle时,
createPojos()
将在
dependencies
中调用吗?不幸的是,我不知道在运行Refresh all时究竟调用了什么,但我想您不会因为这个讨厌的任务调用而改变它的行为

如果需要将生成的类放在src文件夹下,请创建一个生成文件的任务,并将其放在所需的位置下。我假设如果生成了类,它们将不会被编辑。如果是这样的话,创建生成类的其他项目,编译它们并作为jar文件发送。然后在当前项目中,只需为正在生成的jar添加一个依赖项


最后,您不能将任务指定为依赖项,至少不能以您认为的方式指定它。

您想要的是任务依赖项,而不是模块依赖项(这是非常不同的事情)。类似于eclipse.dependsOn(“createPojos”)。然而,据我所知,Eclipse中的“Gradle->Refresh”只刷新模块依赖项,而不运行任何任务。因此,您可能需要重新导入项目,该项目将运行
eclipse
和导入对话框中指定的任何其他任务

谢谢你的建议。我终于设法让它在依赖项部分完成了我想要的:tasks.createPojos.execute()。但是我必须在依赖项之上定义我的任务。我同意我们应该将它分离到另一个项目中并制作一个jar,因为代码在生成后不会改变。