2017-12-04 22 views
0

を言わない:Gradleのコピータスクは、私がdeploy.gradle(Gradleの4.3.1)としてのGradleスクリプトを持っている何のソース

defaultTasks 'echoProp' 
import org.apache.tools.ant.filters.ReplaceTokens 

task copyWar(type: Copy) { 
    from "${source}" 
    into "${target}" 
    include '*.war' 
} 

task echoProp(dependsOn: copyWar) << { 
    println "source dir: ${source}" 
    println "target dir: ${target}" 
    println "source = ${project.property('source')}" 
    def currentJvm = org.gradle.internal.jvm.Jvm.current() 
    println currentJvm 
} 

これは大まかな出力です:

         The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead. 
    at deploy_13e4yjnom30svmprt2wccq4te.run(E:\environments\GRADLE_TEST\TEST\TESTDEPLOY\source\71\deploy.gradle:10) 
    (Run with --stacktrace to get the full stack trace of this deprecation warning.) 
:copyWar NO-SOURCE 
:echoProp 
source dir: E:/environments/GRADLE_TEST/TEST/TESTDEPLOY/source/71 
target dir: E:/environments/GRADLE_TEST/TEST/TESTDEPLOY/target 
source = E:/environments/GRADLE_TEST/TEST/TESTDEPLOY/source/71 
1.8.0_31 (Oracle Corporation 25.31-b07) 

BUILD SUCCESSFUL in 1s 
1 actionable task: 1 executed 

これは、Windows上で動作しますServer 2012 R2マシン。チェックして、定義されたソースディレクトリに.warファイルがあります。

なぜtestApp.warファイルにコピーされないのかわかりません。つまり、ソースディレクトリは他のタスクでうまく定義されていますが、なぜcopyWarタスクがこれらのファイルを見つけることができないのですか? < <を削除し、--infoフラグを付けて実行しているの


結果:また

Initialized native services in: C:\Windows\System32\config\systemprofile\.gradle\native 
The client will now receive all logging from the daemon (pid: 5580). The daemon log file: C:\Windows\System32\config\systemprofile\.gradle\daemon\4.3.1\daemon-5580.out.log 
Starting 19th build in daemon [uptime: 1 hrs 14 mins 1.715 secs, performance: 98%, no major garbage collections] 
Using 2 worker leases. 
Creating new cache for fileHashes, path E:\environments\GRADLE_TEST\TEST\TESTDEPLOY\source\72\.gradle\4.3.1\fileHashes\fileHashes.bin, access [email protected] 
Creating new cache for plugin-use-metadata, path C:\Windows\System32\config\systemprofile\.gradle\caches\4.3.1\plugin-resolution\plugin-use-metadata.bin, access [email protected] 
Creating new cache for client-status, path C:\Windows\System32\config\systemprofile\.gradle\caches\4.3.1\plugin-resolution\client-status.bin, access [email protected] 
Starting Build 
Settings evaluated using settings file. 
Projects loaded. Root project using build file 'E:\environments\GRADLE_TEST\TEST\TESTDEPLOY\source\72\deploy.gradle'. 
Included projects: [root project '72'] 
Evaluating root project '72' using build file 'E:\environments\GRADLE_TEST\TEST\TESTDEPLOY\source\72\deploy.gradle'. 
Compiling build file 'E:\environments\GRADLE_TEST\TEST\TESTDEPLOY\source\72\deploy.gradle' using SubsetScriptTransformer. 
Compiling build file 'E:\environments\GRADLE_TEST\TEST\TESTDEPLOY\source\72\deploy.gradle' using BuildScriptTransformer. 
source dir: file tree 
target dir: E:/environments/GRADLE_TEST/TEST/TESTDEPLOY/target 
source dir: E:/environments/GRADLE_TEST/TEST/TESTDEPLOY/source/72 
target dir: E:/environments/GRADLE_TEST/TEST/TESTDEPLOY/target 
source = E:/environments/GRADLE_TEST/TEST/TESTDEPLOY/source/72 
1.8.0_31 (Oracle Corporation 25.31-b07) 
All projects evaluated. 
No tasks specified. Using project default tasks 'echoProp' 
Selected primary task 'echoProp' from project : 
Tasks to be executed: [task ':copyWar', task ':echoProp'] 
Creating new cache for resourceHashesCache, path E:\environments\GRADLE_TEST\TEST\TESTDEPLOY\source\72\.gradle\4.3.1\fileHashes\resourceHashesCache.bin, access [email protected] 
Creating new cache for taskHistory, path E:\environments\GRADLE_TEST\TEST\TESTDEPLOY\source\72\.gradle\4.3.1\taskHistory\taskHistory.bin, access [email protected] 
Creating new cache for outputFiles, path E:\environments\GRADLE_TEST\TEST\TESTDEPLOY\source\72\.gradle\buildOutputCleanup\outputFiles.bin, access [email protected] 
:copyWar (Thread[Daemon worker Thread 15,5,main]) started. 
:copyWar 
Putting task artifact state for task ':copyWar' into context took 0.0 secs. 
Skipping task ':copyWar' as it has no source files and no previous output files. 
:copyWar NO-SOURCE 
:copyWar (Thread[Daemon worker Thread 15,5,main]) completed. Took 0.002 secs. 
:echoProp (Thread[Daemon worker Thread 15,5,main]) started. 
:echoProp 
Skipping task ':echoProp' as it has no actions. 
:echoProp UP-TO-DATE 
:echoProp (Thread[Daemon worker Thread 15,5,main]) completed. Took 0.004 secs. 

、私Gradle.propertiesからソースとターゲット変数:

source=E\:/environments/GRADLE_TEST/TEST/TESTDEPLOY/source/72 
target=E\:/environments/GRADLE_TEST/TEST/TESTDEPLOY/target 

I私はGradleにとって全く新しいので、これがどういう意味なのか分かりません。

答えて

2

Copyタスクにはsourceというプロパティがあります。
fromメソッドに対して、このプロパティ(file tree)を表すtoString()を指定します。
もちろん、WARファイルが見つかりません。したがって、コピータスクは何もしません。
プロパティの名前を別のものに変更するか、project.sourceを使用して、タスクのプロパティではなくプロジェクトのsourceプロパティを明示的に参照します。

さらに、into "${target}"into targetと同じですが、よりパフォーマンスが優れています。 sourcetargetはすでに文字列ですが、プレースホルダとして使用すると、最初にプレースホルダを評価してあまり意味がない必要があります。

2

このgradle.properties考えてみましょう:

srcDir=./dist 
targetDir=./target 

あなたは、あなたの希望のフォルダとdisttargetを置き換えることができます。 srcDirを使用すると、Copyタスクのプロパティと衝突しないことを意味します。その後

、このbuild.gradle

task copyWar(type: Copy) { 
    from srcDir 
    into targetDir 
    include '*.war' 
} 

が動作するはずです(それは私のためにありません)。

関連する問題