Gradle如何仅将JavaScript文件添加到战争文件中的目录中



我正在尝试创建一个使用Angular2的Web应用程序。构建的一部分。负责编译打字稿并将其添加到战争中的级别如下:

public class TsCompileTask extends DefaultTask {
    File projectDir;
    @OutputDirectory
    File outputDir;
    @TaskAction
    void compile() {
        println "compiling TypeScript files..."
        project.exec {
            executable = "tsc"
            args "-p"
            args projectDir
            args "--outDir"
            args outputDir.toString()
        }
    }
}
public class npmInstallTask extends DefaultTask {
    File projectDir
    @TaskAction
    void compile(){
        println "installing npm packages"
        project.exec {
            workingDir = projectDir.path
            executable = "npm"
            args "install"
        }
    }
}
task tsCompile(type:TsCompileTask) {
    projectDir = file('./src/main/typescript')
    outputDir = file("$buildDir/ts")
}
war{
    into("js"){
        from tsCompile.outputs
    }
}

这将打字稿编译器的输出添加到战争档案中的JS目录,但它不添加依赖项,该依赖项位于目录node_modules中。

我尝试使用以下gradle片段仅添加typescript目录中的JavaScript文件:

war{
    into("js"){
        from fileTree(dir: './src/main/typescrypt/').matching{
            include('**/*.js)
        }.files
    }
}

但是,这包括目录下的所有文件。

我尝试了上述几种变体(例如,使用fileTree('./src/main/typescript').include('**/*.js'),将其闭合而不是相反的方式)。如何添加在War File中的JS目录中以.js结尾的文件?

from方法取字字符串,而不是文件对象。

war{
    into("js"){
        from fileTree(dir: './src/main/typescrypt/').matching{
            include('**/*.js)
        }.files.stream().map{
        File->file.toString()
    }.collect(Collectors.toSet())
}

最新更新