如何在Gradle

时间:2018-01-31 16:34:34

标签: gradle groovy ant

我正在尝试将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输出吗?

2 个答案:

答案 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'])