Gradle 关于什么任务的困惑——全部打印出来
当我执行“gradle任务--所有”时,我有这个 我真正不明白的是,我有toneserver:zip,这取决于toneserver:jar,我有webserver:zip,这取决于webserver:jar,但这些任务都没有显示这些依赖关系。为什么会这样?如何让它真正显示依赖关系 下面是我完整的gradle文件(是的,我需要把apply插件从所有项目中移到subprojects部分和其他部分)Gradle 关于什么任务的困惑——全部打印出来,gradle,Gradle,当我执行“gradle任务--所有”时,我有这个 我真正不明白的是,我有toneserver:zip,这取决于toneserver:jar,我有webserver:zip,这取决于webserver:jar,但这些任务都没有显示这些依赖关系。为什么会这样?如何让它真正显示依赖关系 下面是我完整的gradle文件(是的,我需要把apply插件从所有项目中移到subprojects部分和其他部分) allprojects { apply plugin: 'java' apply plu
allprojects {
apply plugin: 'java'
apply plugin: 'eclipse'
//override gradle's default output directory(build) on every project as it conflicts with
//our build script called build causing failures.
buildDir = 'output'
repositories {
mavenCentral()
}
if (project.hasProperty('myVersion')) {
project.ext.realVersion = project.myVersion
project.version = project.myVersion
} else {
project.ext.realVersion = 'Developer-Build'
project.version = 'Developer-Build'
}
test {
beforeTest { desc ->
println "Executing test ${desc.name} [${desc.className}]"
}
}
task hello << { task -> println "I'm $task.project.name" }
build << { task -> println "MASTER: I'm building now" } //"building with classpath=$sourceSets.main.compileClasspath.files"
}
project(':webserver') {
//play does not follow maven/gradle standard of src/main/java and src/test/java :( :(
//so we override the directories here...(we should put test in the sourceSets.test.java.srcDirs instead)
sourceSets.main{
java.srcDirs = ['app', 'test']
resources.srcDirs = ['app']
}
dependencies {
compile fileTree(dir: 'lib', include: '*.jar')
compile fileTree(dir: 'play-1.2.4/framework/lib', include: '*.jar')
compile fileTree(dir: 'play-1.2.4/framework', include: 'play-*.jar')
}
//MOVE this into allprojects to be run by both toneserver and webserver to put a file there...
task versionFile() << {
File f = new File('webserver/output/version');
f.mkdirs()
File v = new File(f, 'version'+project.ext.realVersion)
println('output version file='+v.getAbsolutePath())
v.createNewFile()
}
task zip(type: Zip) {
archiveName 'dashboard-'+project.version+'.zip'
from('output/version') {
into('webserver')
}
from('..') {
exclude '**/*.pyc'
exclude '**/*.class'
exclude '**/samples-and-tests/**'
exclude '**/play-1.2.4/documentation/**'
exclude 'webserver/conf/logback.xml'
include 'webserver/run*.sh'
include 'webserver/lib/**'
include 'webserver/app/**'
include 'webserver/conf/**'
include 'webserver/play-1.2.4/**'
include 'webserver/public/**'
}
rename 'prod.(.*)', '$1'
}
zip.dependsOn('versionFile')
zip.dependsOn('jar')
assemble.dependsOn('zip')
//playframework has it's own generation of .classpath and .project fils so do not
//overwrite their versions. NEED to call "play.bat eclipsify" here...
task eclipse(overwrite: true) << {
if (System.properties['os.name'].toLowerCase().contains('windows')) {
println "*** WINDOWS "
def result = exec {
commandLine 'cmd', '/c', 'play-1.2.4\\play.bat eclipsify'
}
} else {
println "*** NOT WINDOWS "
def result = exec {
commandLine './play-1.2.4/play eclipsify'
}
}
}
}
project(':toneserver') {
project.ext.genLibDir = file('output/thirdpartylibs')
configurations {
all*.exclude module: 'log4j'
}
dependencies {
compile 'com.google.inject:guice:3.0'
compile 'com.google.protobuf:protobuf-java:2.4.1'
//weird, why is their maven not working(we drop it in the directory instead)...
//compile 'org.asteriskjava:asterisk-java:1.0.0.M3'
//to be erased as soon as we get the chance...(we should try this NOW and see if it is needed anymore)
compile 'commons-configuration:commons-configuration:1.8'
compile 'org.bouncycastle:bcpg-jdk16:1.46'
compile project(':webserver')
//gradle is not sucking in transitive dependencies when they exist in another project so we suck them
//in ourselves here...
compile fileTree(dir: '../webserver/play-1.2.4/framework/lib', include: '*.jar')
compile fileTree(dir: '../webserver/lib', include: '*.jar')
compile fileTree(dir: '../webserver/play-1.2.4/framework', include: 'play-*.jar')
compile 'org.bouncycastle:bcpg-jdk16:1.46'
testCompile 'junit:junit:4.11'
}
task generateSources {
project.ext.outputDir = file("$buildDir/generated-src")
outputDir.exists() || outputDir.mkdirs()
if (System.properties['os.name'].toLowerCase().contains('windows')) {
println "*** WINDOWS "
def result = exec {
commandLine 'cmd', '/c', '..\\tools\\protoc\\protoc.exe', '--java_out=output\\generated-src', 'src\\schemas\\agentbridge.proto'
}
} else {
throw new RuntimeException("DARN, protoc only works on windows :( :( right now")
}
}
compileJava.dependsOn("generateSources")
sourceSets {
main {
java {
srcDir 'output/generated-src'
}
}
}
tasks.eclipse.dependsOn("generateSources")
task copyJars(type: Copy) {
from(configurations.compile) {}
into genLibDir
}
task initconfig(type:Copy) {
from('src/staging/toneserver') {
include '**/*'
}
into 'output/staging'
}
task zip(type: Zip) {
archiveName 'toneserver-'+project.version+'.zip'
from('src/staging') {
include 'toneserver/**'
}
from('output/thirdpartylibs') {
into('toneserver/lib')
}
from('output/version') {
into('webserver')
}
}
zip.dependsOn('copyJars')
zip.dependsOn('jar')
assemble.dependsOn('zip')
}
//overwrite the eclipse target so that no .classpath ends up in stserver directory
task eclipse(overwrite: true) {
}
所有项目{
应用插件:“java”
应用插件:“eclipse”
//在每个项目上重写gradle的默认输出目录(build),因为它与
//我们的构建脚本称为“构建导致失败”。
buildDir='output'
存储库{
mavenCentral()
}
if(project.hasProperty('myVersion')){
project.ext.realVersion=project.myVersion
project.version=project.myVersion
}否则{
project.ext.realVersion='Developer Build'
project.version='Developer Build'
}
试验{
测试前{desc->
println“正在执行测试${desc.name}[${desc.className}]”
}
}
task hello println“我是$task.project.name”}
build println“MASTER:I'm building now”}/“building with classpath=$sourceset.main.compileClasspath.files”
}
项目(':webserver'){
//播放不遵循src/main/java和src/test/java的maven/gradle标准:(:(
//所以我们在这里覆盖目录…(我们应该将test放在sourceset.test.java.srcDirs中)
sourceset.main{
java.srcDirs=['app','test']
resources.srcDirs=['app']
}
依赖关系{
编译文件树(目录:“lib”,包括:“*.jar”)
编译文件树(目录:“play-1.2.4/framework/lib”,包括:“*.jar”)
编译文件树(目录:“play-1.2.4/framework”,包括:“play-*.jar”)
}
//将此文件移动到所有由toneserver和webserver运行的项目中,以便在其中放置文件。。。
task versionFile()gradle tasks——所有的
都显示所有的任务,但只显示一级任务依赖关系。我同意有一种方法可以可视化整个任务图是很有用的,但gradle目前并没有提供现成的功能。嘘,但答案是+1,所以我知道。谢谢,(希望有一天他们会添加它)哦,这真的太糟糕了,因为我试图在这里使用这个特性来调试这个问题……并且更清楚地了解gradle“认为”任务依赖性在哪里
allprojects {
apply plugin: 'java'
apply plugin: 'eclipse'
//override gradle's default output directory(build) on every project as it conflicts with
//our build script called build causing failures.
buildDir = 'output'
repositories {
mavenCentral()
}
if (project.hasProperty('myVersion')) {
project.ext.realVersion = project.myVersion
project.version = project.myVersion
} else {
project.ext.realVersion = 'Developer-Build'
project.version = 'Developer-Build'
}
test {
beforeTest { desc ->
println "Executing test ${desc.name} [${desc.className}]"
}
}
task hello << { task -> println "I'm $task.project.name" }
build << { task -> println "MASTER: I'm building now" } //"building with classpath=$sourceSets.main.compileClasspath.files"
}
project(':webserver') {
//play does not follow maven/gradle standard of src/main/java and src/test/java :( :(
//so we override the directories here...(we should put test in the sourceSets.test.java.srcDirs instead)
sourceSets.main{
java.srcDirs = ['app', 'test']
resources.srcDirs = ['app']
}
dependencies {
compile fileTree(dir: 'lib', include: '*.jar')
compile fileTree(dir: 'play-1.2.4/framework/lib', include: '*.jar')
compile fileTree(dir: 'play-1.2.4/framework', include: 'play-*.jar')
}
//MOVE this into allprojects to be run by both toneserver and webserver to put a file there...
task versionFile() << {
File f = new File('webserver/output/version');
f.mkdirs()
File v = new File(f, 'version'+project.ext.realVersion)
println('output version file='+v.getAbsolutePath())
v.createNewFile()
}
task zip(type: Zip) {
archiveName 'dashboard-'+project.version+'.zip'
from('output/version') {
into('webserver')
}
from('..') {
exclude '**/*.pyc'
exclude '**/*.class'
exclude '**/samples-and-tests/**'
exclude '**/play-1.2.4/documentation/**'
exclude 'webserver/conf/logback.xml'
include 'webserver/run*.sh'
include 'webserver/lib/**'
include 'webserver/app/**'
include 'webserver/conf/**'
include 'webserver/play-1.2.4/**'
include 'webserver/public/**'
}
rename 'prod.(.*)', '$1'
}
zip.dependsOn('versionFile')
zip.dependsOn('jar')
assemble.dependsOn('zip')
//playframework has it's own generation of .classpath and .project fils so do not
//overwrite their versions. NEED to call "play.bat eclipsify" here...
task eclipse(overwrite: true) << {
if (System.properties['os.name'].toLowerCase().contains('windows')) {
println "*** WINDOWS "
def result = exec {
commandLine 'cmd', '/c', 'play-1.2.4\\play.bat eclipsify'
}
} else {
println "*** NOT WINDOWS "
def result = exec {
commandLine './play-1.2.4/play eclipsify'
}
}
}
}
project(':toneserver') {
project.ext.genLibDir = file('output/thirdpartylibs')
configurations {
all*.exclude module: 'log4j'
}
dependencies {
compile 'com.google.inject:guice:3.0'
compile 'com.google.protobuf:protobuf-java:2.4.1'
//weird, why is their maven not working(we drop it in the directory instead)...
//compile 'org.asteriskjava:asterisk-java:1.0.0.M3'
//to be erased as soon as we get the chance...(we should try this NOW and see if it is needed anymore)
compile 'commons-configuration:commons-configuration:1.8'
compile 'org.bouncycastle:bcpg-jdk16:1.46'
compile project(':webserver')
//gradle is not sucking in transitive dependencies when they exist in another project so we suck them
//in ourselves here...
compile fileTree(dir: '../webserver/play-1.2.4/framework/lib', include: '*.jar')
compile fileTree(dir: '../webserver/lib', include: '*.jar')
compile fileTree(dir: '../webserver/play-1.2.4/framework', include: 'play-*.jar')
compile 'org.bouncycastle:bcpg-jdk16:1.46'
testCompile 'junit:junit:4.11'
}
task generateSources {
project.ext.outputDir = file("$buildDir/generated-src")
outputDir.exists() || outputDir.mkdirs()
if (System.properties['os.name'].toLowerCase().contains('windows')) {
println "*** WINDOWS "
def result = exec {
commandLine 'cmd', '/c', '..\\tools\\protoc\\protoc.exe', '--java_out=output\\generated-src', 'src\\schemas\\agentbridge.proto'
}
} else {
throw new RuntimeException("DARN, protoc only works on windows :( :( right now")
}
}
compileJava.dependsOn("generateSources")
sourceSets {
main {
java {
srcDir 'output/generated-src'
}
}
}
tasks.eclipse.dependsOn("generateSources")
task copyJars(type: Copy) {
from(configurations.compile) {}
into genLibDir
}
task initconfig(type:Copy) {
from('src/staging/toneserver') {
include '**/*'
}
into 'output/staging'
}
task zip(type: Zip) {
archiveName 'toneserver-'+project.version+'.zip'
from('src/staging') {
include 'toneserver/**'
}
from('output/thirdpartylibs') {
into('toneserver/lib')
}
from('output/version') {
into('webserver')
}
}
zip.dependsOn('copyJars')
zip.dependsOn('jar')
assemble.dependsOn('zip')
}
//overwrite the eclipse target so that no .classpath ends up in stserver directory
task eclipse(overwrite: true) {
}