私のWARファイルには、コンポーネントのJavaソースファイルが含まれている必要があります。 私はプログラム的にサブプロジェクトでタスクを実行しています、私のルートプロジェクトのbuild.gradleで:Gradle:サブプロジェクトでタスクをプログラムで実行する
task copySourceFiles(type: Copy) {
destinationDir = file(project.buildDir.name + '/sourceFiles')
into('componentName') {
from(project.projectDir)
exclude('build')
exclude('bin')
exclude('src/main/webapp')
exclude('.gradle')
}
}
コンソール出力:
[sts] -----------------------------------------------------
[sts] Starting Gradle build for the following tasks:
[sts] clean
[sts] build
[sts] -----------------------------------------------------
copyFilesTask.destinationDir=<...>application1\build\sourceFiles
:clean
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war
copyFilesTask.destinationDir=<...>application1\build\sourceFiles
copyFilesTask.destinationDir=<...>application1\build\sourceFiles
copyFilesTask.destinationDir=<...>application1\build\sourceFiles
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build
、ということを意味
apply plugin: 'war'
jar.enabled = false
war {
// - Copy Java source files to the folder corresponding to the component;
into("/") { from { collectFilesFromCopyTask('copySourceFiles') } }
}
// Collects files from destinationDirs of copy tasks with matching taskName
def collectFilesFromCopyTask(taskName) {
FileCollection collectedFiles = files{}
// for each task in subprojects
subprojects.each {project ->
project.tasks.withType(Copy).matching { task -> task.name.equals(taskName) }.each { copyFilesTask ->
println 'copyFilesTask.destinationDir=' + copyFilesTask.destinationDir
// execute task
copyFilesTask.execute()
// add destinationDir of the task to the collected files
collectedFiles += files(copyFilesTask.destinationDir)
}
}
return collectedFiles
}
をサブプロジェクトでは、私は仕事を持っていますcollectFilesFromCopyTask()は4回実行されます。 WARタスクから一度だけ実行する必要があります。
>>あなたの戦争のタスクは、これらのタスクの出力を使用します<<私はそれをどのように行うのですか? – isobretatel
単純に 'from mySuperFancyTask'はすべきです。このように宣言すると、このように使用すると暗黙的なタスクの依存関係が追加されるため、タスクの依存関係を犠牲にすることさえできるかもしれません。 – Vampire
'application1:copySourceFiles'からエラーが発生しました:URL 'application1:copySourceFiles'をファイルに変換できません。 – isobretatel