私はangular2を使用するWebアプリケーションを作成しようとしています。次のように写し(typescript)をコンパイルし、戦争に追加する責任build.gradleの一部である:gradleどのようにwarファイル内のディレクトリにjavascriptファイルを追加する
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ディレクトリにtypescriptですコンパイラの出力が追加されますが、それはしていませんノードnode_modulesにある依存関係を追加します。
私はtypescriptですがdirectoryintoのTHW戦争からのみJavaScriptファイルを追加するには、次のGradleスニペットを使用しようとしました:
war{
into("js"){
from fileTree(dir: './src/main/typescrypt/').matching{
include('**/*.js)
}.files
}
}
しかし、これはディレクトリの下のすべてのファイルが含まれています。
私は上記のいくつかのバリエーションを試しました(例えば、fileTree('./src/main/typescript').include('**/*.js')
を使用して、別の方法の代わりにfromのクロージャーを使用しています)。 .jsで終わるファイルのみをwarファイルのjsディレクトリに追加するにはどうすればよいですか?
私は、ホイールの再発明をやめることを強くお勧めします。角度のあるプロジェクトを作成するには、angle-cliを使用します。バンドルされ、最適化されたすべての成果物を含むdistディレクトリが生成されます。次のgradleプラグインを使用して、gradclプロジェクトにangle-cliビルド(とノードとnpmのインストール)を統合してください:https://github.com/srs/gradle-node-plugin –
@JBNizetこの特定のプロジェクトですが、どうやってやるべきかを尋ねるのは、他の状況がたくさん**あります。 –
これは実際にグラデル関連ではありません。あなたはあなたの戦争に埋め込むすべてのアーティファクトを含むディレクトリを生成するためにあなたのJavaScriptビルド(必要なwebpack、gulp、wheteverを使用して)が必要です。 Gradleはこのディレクトリを戦争の中に埋め込む必要があります。 –