私はまだ問題があり、私が明らかに欠けているものについていくつかの光を漏らしていることに非常に感謝します。 私は達成したいGradleタスクを理解していると思っていましたが、最後のビットを働かせることはできません。ここでコピータスクの動的グローバルリストを作成するためのGradleタスクのオーダーは除外されます
は、私が番号順に、何をしたいです:
- ダイナミック、グローバルな「copyExcludes」リストを作成します。 1つのタスクで
- 'copyExcludes'リストを除くディレクトリツリー全体をコピーします。
- コピータスクからファイルツリー内のすべてのディレクトリでmavenコマンド 'mvn verify'を実行します。
- すべてのMavenコマンドが正常に完了した後、ディレクトリツリーのZIPアーカイブを作成します。だけではなく、したがって、すべてのモジュール(サブディレクトリ)がコピーされ、以下
は、コードですが、私はでハッキングされており、および「コピー」タスクを実行する前に、更新するには、「copyExcludes」リストを取得することはできません私が望む少数。
/**
* Copy all files to ${assemblyDir}, then run 'mvn verify' on each and every included module.
* Then create an assembly ZIP
*/
def copyFromDir = rootProject.file('.')
def assemblyDir = "target/gradle_assembly"
def assemblyDestination = "target/assembly"
def assemblyName = "assembly.zip"
def List includedModules = []
//---------------------------------------------------------------------------//
def allModules = [
'common',
'spring-hello-world',
'spring-configuration',
'spring-advanced-configuration',
'spring-jdbc',
'spring-jms',
'spring-batch',
'spring-batch-configuration'
]
def copyExcludes = []
//---------------------------------------------------------------------------//
/**
* Copy all files from root (./)
but exclude the module sub directories that are from 'getCopyExcludes(allModules)'
*/
task copyFiles(type: Copy) {
def cpExcludes = []
ext {
println "********** copyFiles ext{} **********"
println "1 ********** (${copyExcludes.size()}) copyExcludes: '${copyExcludes}' **********"
cpExcludes = copyExcludes
cpExcludes = getCopyExcludes(allModules)
}
doFirst {
println "********** copyFiles doFirst{} **********"
println "2 ********** (${copyExcludes.size()}) copyExcludes: '${copyExcludes}' **********"
cpExcludes = copyExcludes
cpExcludes = getCopyExcludes(allModules)
println "********** (${cpExcludes.size()}) cpExcludes: '${cpExcludes}' **********"
}
// doLast{
if (file(buildDir).exists()) {
delete "./target"
}
from("${copyFromDir}") {
into '.'
include '*'
include '**/*' //to include contents of a folder present inside Reports directory
include '**/*.*' //to include contents of a folder present inside Reports directory
exclude (getCopyExcludes(allModules))
}
into {
def outputDir = assemblyDir;
outputDir
}
// }
}
//---------------------------------------------------------------------------//
//task mavenVerify() {
task mavenVerify(dependsOn:copyFiles) {
println "\n\n********** mavenVerify **********\n"
def moduleDir = "${assemblyDir}/code"
doLast {
// For each module that is to be included,
allModules.each { module ->
if (file("${assemblyDir}/code/${module}").exists()) {
moduleDir = "${assemblyDir}/code/${module}"
exec {
args "-D${mavenRepo} -D${mavenOpt}"
workingDir "${moduleDir}"
def command = commandLine 'mvn', 'verify'
}
println "----------> END ${moduleDir} ----------\n"
}
}
}
return "success"
}
//---------------------------------------------------------------------------//
/**
* Create a ZIP file for the previoulsy validate code copied and verified.
*/
task assembleZip(type: Zip, dependsOn:mavenVerify){
println "********** assembleZip **********"
from "${assemblyDir}"
include '*'
include '**/*' //to include contents of a folder present inside Reports directory
include '**/*.*' //to include contents of a folder present inside Reports directory
archiveName "${assemblyName}"
destinationDir(file("${assemblyDestination}"))
}
//---------------------------------------------------------------------------//
task basic_jdbc_aop_mvc_rest << {
println "********** basic_jdbc_aop_mvc_rest **********"
def modulesToKeep = []
// doFirst{
ext {
// Create List
modulesToKeep.addAll(modules_basic())
modulesToKeep.addAll(modules_jdbc())
// println "********** (${modulesToKeep.size}) modulesToKeep: '${modulesToKeep}' **********"
// allModules.removeAll(modulesToKeep)
// includedModules = allModules
// println "********** (${includedModules.size()}) allModules (pre): '${includedModules/**/}' **********"
// copyExcludes = getCopyExcludes(allModules)
// println "********** (${copyExcludes.size()}) copyExcludes: '${copyExcludes}' **********"
}
// doFirst{
// println "********** (${allModules.size()}) allModules (pre): '${allModules}' **********"
// println "********** (${modulesToKeep.size}) modulesToKeep: '${modulesToKeep}' **********"
// includedModules = allModules.minus(modulesToKeep)
allModules.removeAll(modulesToKeep)
includedModules = allModules
println "********** (${includedModules.size()}) allModules (pre): '${includedModules/**/}' **********"
copyExcludes = getCopyExcludes(allModules)
// println "********** (${copyExcludes.size()}) copyExcludes: '${copyExcludes}' **********"
// }
}
def List getCopyExcludes(mtr) {
def newList = mtr.collect{ "**/${it}" }
newList.addAll('**/target',
'**/.git',
'**/*.iml',
'**/.idea',
'**/gradle', // #5
'**/.gradle',
)
// newList.addAll(modulesToRemoveExclude(mtr))
println "********** getCopyExcludes newList (${newList.size}): '${newList}' **********"
return newList
}
[copyFiles]*.shouldRunAfter basic_jdbc_aop_mvc_rest
//---------------------------------------------------------------------------//
def modules_basic(){
return [
// Basic
'common',
'spring-hello-world',
'spring-configuration',
'spring-advanced-configuration'
]
}
def modules_jdbc(){
return [
// JDBC
'spring-jdbc'
]
}
//--- THE END ---------------------------------------------------------------//
は、私はあなたがすべてのデバッグ文を自分で混乱するかもしれないと思うここにコード
私はこの例から始めることができますが、実際のリストを設定するタスクを呼び出すか、コマンドラインから取り込まれた一連のパラメータのように、コマンドラインから入力を取る方法を教えてください。 –
-Pparam1 = helloを使用して、gradlewタスクにパラメータを渡すことができます。グラデーションコードの中では、project.getProperty( "param1")を使ってアクセスすることができます。これはあなたの質問に答えますか? :) –