我正在尝试将Ant项目转换为Gradle。 一个目标是执行Java Main类。并将java文件列表作为参数传递给Main类。
Ant代码:
<target name="someThing">
<fileset dir="src/main/java" id="input.files">
<include name="**/api/SomeApi.java"/>
<include name="**/temporaryuserdata/api/Some2API.java"/>
</fileset>
<pathconvert pathsep=" " property="javaFiles" refid="input.files"/>
<java classname="com.some.tool.MainClass" classpathref="buildtools.classpath" fork="true" failonerror="true">
<arg value="${javaFiles}"/>
</java>
</target>
我使用gradle中的ant支持将其转换为gradle,方法如下: Gradle代码:
task someThing(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = 'com.some.tool.MainClass'
ant.fileset(dir : '', id: 'input.files'){
include(name : "**/api/SomeApi.java")
include(name : "**/api/Some2API.java")
}
ant.pathconvert(pathsep : " ", refid: "input.files", property: "javaFiles")
args = [ant.properties["javaFiles"]]
}
它按预期工作。但是,我不想在gradle中使用蚂蚁。
有人可以帮助我使用正确的gradle和groovy工具获得相同的fileset和pathconvert输出吗?
答案 0 :(得分:1)
你可以这样做
FileTree files = fileTree('src/main/java').matching {
include '**/api/SomeApi.java'
include '**/api/SomeApi2.java'
}
args = [files.asPath]
但实际上你应该使用JavaCompile任务而不是JavaExec
答案 1 :(得分:1)
Gradle有很好的API来处理文件:
https://docs.gradle.org/current/userguide/working_with_files.html
例如,您可以使用fileTree:
FileTree tree = fileTree(dir: 'src', includes: ['**/api/SomeApi.java', '**/api/Some2API.java'])