Gradleãããã¡ã¢ ãç°å¢ãã¨ã®ãã¡ã¤ã«ã³ãã¼ç¯ã
â»Gradle 1.12ã«ã¦å®æ½
ããããã£ãã®ã¯ããããã㣠e ã§æå®ãããç°å¢ç¨ã®ãã¡ã¤ã«ãã³ãã¼ãããã¨ã
æåã¯ä»¥ä¸ã®ããã«æ¸ããã
apply plugin: 'base' task copySettings(type: Copy) { doFirst { if(!project.hasProperty('e')){ throw new InvalidUserDataException("Input 'e'!") } } from "settings/$project.e" into 'build' }
ãããã㣠e ãæå®ããªãã§å®è¡ããã¨ä»¥ä¸ã®ãããªã¨ã©ã¼ã
eiryus-MacBook-Air:gradle eiryu$ gradle co FAILURE: Build failed with an exception. * Where: Build file '/Users/eiryu/git/gradle/build.gradle' line: 10 * What went wrong: A problem occurred evaluating root project 'gradle'. > Could not find property 'e' on root project 'gradle'. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 5.071 secs
æå¾
ã¨ãã¦ã¯ doFirst ã§ããªãã¼ã·ã§ã³ã¨ã©ã¼ã«ãªã£ã¦æ¬²ããã£ããããã«ãã¹ã¯ãªããã解éããæç¹ã§ from ã®é¨åã® $project.e ã§è½ã¡ã¦ãã模æ§ãclosureã«å¤æ´ from { "settings/$project.e" }
ãã¦ãçµæã¯åãã
ããããcleanã¿ã¹ã¯ã®å®è¡æã«ããããã㣠e ãå¿ é ã«ãªã£ã¦ãã¾ãããã以ä¸ã®ããã«ä¿®æ£ããã
- e ããã¼ã«ã«å¤æ°envã«æã¤ããã«ãã
apply plugin: 'base' def env task copySettings(type: Copy) { doFirst { if(project.hasProperty('e')){ env= project.e }else{ throw new InvalidUserDataException("Input 'e'!") } } from "settings/$env" into 'build' }
å®è¡ããã¨ã
eiryus-MacBook-Air:gradle eiryu$ gradle co -Pe=dev :copySettings UP-TO-DATE BUILD SUCCESSFUL Total time: 3.295 secs
ã¨ãªã£ããæåã¯ãããã®ã®ãUP-TO-DATEã®ããbuildãã£ã¬ã¯ããªãçæãããªããã
ãã*1ãåèã«ãtask ã®è¨å®ã¨ãã¦ãoutputs.upToDateWhen { false }
ã追å ãã¦ã¿ããã©ããã¡ã
次ã¯ãã¼ã«ã«å¤æ° env ã«ããã©ã«ãå¤ 'prod' ãè¨å®ãã¦ã¿ãã
eiryus-MacBook-Air:gradle eiryu$ cat build.gradle apply plugin: 'base' def env= 'prod' task copySettings(type: Copy) { doFirst { if(project.hasProperty('e')){ env= project.e }else{ throw new InvalidUserDataException("Input 'e'!") } } from "settings/$env" into 'build' }
ä»åº¦ã¯ UP-TO-DATE ã«ãªãã build ãã£ã¬ã¯ããªãä½æãããããããã常㫠env ã 'prod' ã¨æå®ããã¦ãããã®ã¨ãã¦åãã¦ãã¾ã£ãã
次ã¯from ã®é¨åãclosure from { "settings/$env" }
ã«ãã¦å®è¡ã
ããããæå®ããããããã£ã§åãããã¨ã«æåã
closure ã«ãã¦ããªã GString ã®å±éã¯ãã«ãèµ·åæã«è¡ããã¦ãããããããªæåã«ãªã£ã¦ããã®ã ãããï¼ ãããããããããããããããã
å®æç
apply plugin: 'base' def env= 'prod' task copySettings(type: Copy){ doFirst{ if(project.hasProperty('e')){ env= project.e }else{ throw new InvalidUserDataException("Input 'e'!") } } from { "settings/$env" } into 'build' }