10æ1æ¥ã«Gradle2.8-rc1ãåºãã¨ããè¨äºãæ¸ãã¦ããã1ã¶æãGradle2.9-rc1ã2015/11/4ã«åºã¦ãã¾ãã
ã¨ããããã§ããã¤ãã©ãããªãªã¼ã¹ãã¼ãã®æ訳
Gradle TestKitããã£ã¨ä¾¿å©ã«ãªã£ã
Gradle TestKitãGradle2.6ã§åºã¦ãããã©ã°ã¤ã³ã®ãã¹ããç°¡åã«ãªã£ãããã§ãããä»åã®ãªãªã¼ã¹ã§ãã£ã¨ä¾¿å©ã«ãªãã¾ãããTestKitã¯ãããã°ãã¯ãã¹ãã¼ã¸ã§ã³ãã¹ãããã«ãææç©ãåå¾ãããã¨ãã§ããããã«ãªãã¾ããã
ããç°¡åã«ãªã£ãæ©è½ãã¹ã
Gradle TestKitã¯ããã°ã©ã çã«Gradleãã«ããèµ°ããã¦ããã©ã°ã¤ã³ã®æ¤è¨¼ãè¡ãããã§ããããã¹ã対象ã®ã¯ã©ã¹ãªã©ã«å¯¾ãã¦ãããã¬ã¼ãå²ãå½ã¦ããã¨ã容æã«ãã¾ããã
Gradleãã«ãã®æ£ç¢ºãªã·ãã¥ã¬ã¼ã·ã§ã³ãæä¾ããããã«ãTestKitã¯ç°ãªãããã»ã¹ã§å®è¡ãã¦ãã¾ããããã®çµæããããã¬ã¼ãå²ãå½ã¦ããã¨ãé常ã«å°é£ã ã£ãããã§ãã
ä»åã®ãªãªã¼ã¹ã«ãã£ã¦ããã¹ãããã¹ãããã»ã¹ã¨åãããã»ã¹ã§èµ°ããããã¨ãå¯è½ã«ãªãããã«æ¹åãã¾ãããorg.gradle.testkit.debug
ã¨ããã·ã¹ãã ããããã£ãtrue
ã«è¨å®ããããGradleRunner
ã§withDebug(true)
ãå¼ã³åºããã¨ã§ãããã¯å¯è½ã«ãªãã¾ãã
詳ããã¯TestKitã®ã¦ã¼ã¶ã¼ã¬ã¤ããåç §ãã¦ãã ããã
è¤æ°ã®Gradleãã¼ã¸ã§ã³ã«å¯¾ãããã©ã°ã¤ã³ã®ãã¹ã
GradleRunner
ããä»»æã®ãã¼ã¸ã§ã³ã®ãã«ããå®è¡ã§ããããã«ãã¾ãããããã§è¤æ°ã®Gradleãã¼ã¸ã§ã³ã«å¯¾ãã¦ãã©ã°ã¤ã³ã対å¿ã§ããããã¹ãã§ãã¾ãã
GradleRunner#withGradleVersion(String version)
ãå¼ã³åºããã¨ã§ãã¼ã¸ã§ã³ã®æå®ãè¡ããã¨ãã§ãã¾ãã
ãã詳ããã¯TestKitã®è©²å½ç®æãã覧ãã ããã
ãã«ãææç©ã®åå¾
GradleRunner
ãããã°ã©ã ããå®è¡ãããã¨ã§ããã¹ã対象ã®ãã©ã°ã¤ã³ã®ææç©ãåå¾ã§ããããã«ãªãã¾ããã
ããã©ã«ãã§ã¯ãææç©ã¯åå¾ã§ãã¾ããããforwardOutput()
ã¡ã½ãããå®è¡ãããã¨ã§ããã¹ã対象ã®ææç©ãGradleRunner
ãä¿æããã¢ã¦ããããã¹ããªã¼ã ã«å²ãå½ã¦ããã¨ãã§ãã¾ããããã§ææç©ã®å¦¥å½æ§ãç®è¦ã§æ¤è¨¼ãªãã¦ãã¨ãããªãã¦ãã¿ã¾ãã
ãã¡ã¤ã«ã«æ¸ãåºããªã©ã®æä½ãå¿
è¦ã§ããã°ãforwardStdOutput(Writer)
ããã³forwardStdError(Writer)
ã¡ã½ãããå©ç¨ãã¦ãã ããã
ã¤ã³ã¯ãªã¡ã³ã¿ã«ãã«ãã®ããã©ã¼ãã³ã¹æ¹å
ã¤ã³ã¯ãªã¡ã³ã¿ã«ãã«ãã®ããã©ã¼ãã³ã¹ã«ã¤ãã¦ããã¶ãGradle2.9ã¯Gradle2.8ã«æ¯ã¹ã¦æ¹åããã¦ãã¾ãã
(æ°åãã¡ã¤ã«)ãè¶ ãããããªå¤§ããªãã«ãã«ããã¦ã¯ã2.7ã«æ¯ã¹ã¦70%ã2.8ã«æ¯ã¹ã¦40%æ¹åããã¦ãã¾ãã
ã¤ã³ã¯ãªã¡ã³ã¿ã«ãã«ãã§ã®up-to-date
ãã§ãã¯ãããéããã
Gradleã¯ãããã¡ã¤ã«ã·ã¹ãã ãå¹ççã«æ±ããã¨ã§up-to-date
ãã§ãã¯ãé«éåãã¦ãã¾ãããã ããããã¯GradleãJava7以ä¸ã§å©ç¨ããå ´åã«éããã¾ãã
include
ãexclude
ãã¿ã¼ã³ã®ãããã³ã°ãæ¹åãããã¨ã§ãã§ãã¯ãé«éåãã¾ãããããã¯ãã¹ã¦ã®Javaã®ãã¼ã¸ã§ã³ã§å©ç¨å¯è½ã§ãã
ãã ãããã«ãã¹ã¯ãªãããå¤æ´ãããã¨ããããã®ã¡ãªããã¯å©ç¨ã§ãã¾ããã®ã§ã注æãã ããã
ã¤ã³ã¯ãªã¡ã³ã¿ã«ãã«ãã«ã¦ã¡ã¢ãªã®å©ç¨éãæ¸ããã¾ãã
ã¤ã³ã¯ãªã¡ã³ã¿ã«ãã«ãã§å©ç¨ããã¡ã¢ãªã®éãæ¸ããã¾ãããå é¨ãã£ãã·ã¥ã§å©ç¨ããããã¡ã¤ã«ãã¹æååã®éè¤ãåé¤ãã¦ãJavaããã¸ã§ã¯ãã®ãã¹ãã¯ã©ã¹ãåæããéã®ãªã¼ãã¼ãããæéãæ¸ãããã¨ã«ãããGradle2.8ã«æ¯ã¹ã¦30ã70%ã®ã¡ã¢ãªæ¶è²»éã®åæ¸ã«ã¤ãªããã¾ããã
ã¡ã¢ãªå©ç¨éã®åæ¸ã¯ãã®ã¾ã¾å°ãªãã¡ã¢ãªã§ã®ããã©ã¼ãã³ã¹æ¹åã¨ããå½¢ã§ç¾ãã¾ãã
ãããå ã»ã©ã¨åæ§ããã«ãã¹ã¯ãªããã®å¤æ´ãè¡ãããå ´åããã®ã¡ãªããã¯å©ç¨ã§ãã¾ããã
ã¢ãã«DSLã®æ¹å
ãã«ãã¹ã¯ãªããä¸ã§å®ç¾©ããä»ã®ã«ã¼ã«ãå ¥åå¤ã¨ãã¦å©ç¨å¯è½ã«ãªãã¾ãã
ãã«ãã¹ã¯ãªããä¸ã§å®ç¾©ããä»ã®ã¢ãã«è¦ç´ ã®å¤ãå ¥åå¤ã¨ãã¦å©ç¨ãããã¨ãå¯è½ã«ãªãã¾ããã
model { components { all { targetPlatform = $.platforms.java6 } } }
ä¸è¨ã®ä¾ã§ã¯å
¨ã¦ã®ã³ã³ãã¼ãã³ãã®ã¿ã¼ã²ãããJava 6ã«è¨å®ãã¦ãã¾ãããã§ã«æ§ç¯ãããã¢ãã«è¦ç´ S.platforms.java6
ã¯æ¬¡ã®ã¢ãã«è¦ç´ ã®å
¥åã¨ãã¦åç
§ããã¾ããåç
§ãããå¤ã¯ãã§ã«ä¸å¯å¤ãªå¤ã¨ãã¦ç¢ºå®ããã¦ãããã®ã¨ãã«ã¼ã«å®è¡æ©è½ã«ãã£ã¦è§£éããã¾ãã
ããããã¯ã¢ãã«DSLã®å ¥åã¨ãã¦ã®å©ç¨æ¹æ³ãåç §ãã ããã
ã¢ãã«ã¿ã¤ãã«å¯¾ããå¾¹åºããæ¤è¨¼
管ç対象å¤ã¢ãã«ã¸ã®ã¨ã©ã¼ã¡ãã»ã¼ã¸ãæ¹è¯ãã¾ãããç¹ã«ãµãã¼ããããåãæ確ã«è¨è¿°ããããã«ãã¦ãã¾ããä¸è¨ã®ä¾ã§ã¯MyModel
ã¯ãã¼ã³ã«FileInputStream
ãç¨ãã¦ããä¸é©åãªç®¡ç対象ã¢ãã«ã§ãã
@Managed interface MyModel { FileInputStream getStream() void setStream(FileInputStream stream) }
ã¨ã©ã¼ã¡ãã»ã¼ã¸
A model element of type: 'MyModel' can not be constructed. Its property 'java.io.FileInputStream stream' can not be constructed It must be one of: - A managed type (annotated with @Managed) - A managed collection. A valid managed collection takes the form of ModelSet<T> or ModelMap<T> where 'T' is: - A managed type (annotated with @Managed) - A scalar collection. A valid scalar collection takes the form of List<T> or Set<T> where 'T' is one of (String, Boolean, Character, Byte, Short, Integer, Float, Long, Double, BigInteger, BigDecimal, File) - An unmanaged property (i.e. annotated with @Unmanaged)
LanguageSourceSet
ãFunctionalSourceSet
ã«ç´æ¥å ããäºãã§ããããã«ãªãã¾ãã
LanguageType
åã®ã¤ã³ã¹ã¿ã³ã¹ã§ããä½ãããã®LanguageSourceSet
ãã¢ãã«ã¹ãã¼ã¹å
ã«ããFunctionalSourceSet
ã«è¿½å ãããã¨ãå¯è½ã«ãªãã¾ããã
ããã¯RuleSource
ãã©ã°ã¤ã³ããå®è¡ã§ãã¾ãã
class MyRule extends RuleSource { @Model void functionalSources(FunctionalSourceSet fss) { fss.create(`myJavaSourceSet`, JavaSourceSet) {LanguageSourceSet lss -> lss.source.srcDir 'src/main/myJavaSrcSet' } } } apply plugin: MyRule
ã¾ãã¯ã¢ãã«DSLããã¯
model {
functionalSources(FunctionalSourceSet) {
myJavaSourceSet(JavaSourceSet) {
source {
srcDir 'src/main/myJavaSrcSet'
}
}
}
}
ç»é²ãããLanguageSourceSet
ã®å®è£
ã¯ãªãã¸ã§ã¯ãçææã«ç¹å®ã§ãã¾ããLanguageSourceSet
ãç»é²ããã«ã¯ã«ã¼ã«ã¢ããã¼ã·ã§ã³ã®@LanguageType
ãä»ä¸ãã¾ãã
public class JavaLanguageRuleSource extends RuleSource { @LanguageType public void registerLanguage(LanguageTypeBuilder<JavaSourceSet> builder) { builder.setLanguageName("java"); builder.defaultImplementation(DefaultJavaLanguageSourceSet.class); } }
apply plugin: JavaLanguageRuleSource
注æ : LanguageSourceSet
ã®ã¤ã³ã¹ã¿ã³ã¹ãFunctionalSourceSet
ã«ä¸è¨ã®æ¹æ³ã§è¿½å ãããã¨ãã¦ãããããã¬ãã«ã½ã¼ã¹ã³ã³ããã®ä¸ã«ã¯è¿½å ããã¾ãããããã«ã¤ãã¦ã¯ä»å¾ã®ãªãªã¼ã¹ã®ä¸ã§å¯¾å¿ãããã¨ã決å®ãã¦ãã¾ãã
Tooling APIãeclispse buildersã¨naturesã®è©³ç´°ãæä¾ããããã«ãªãã¾ãã(eclipseé¢é£ããããããã®ã§ãªãã®ãã£ã¡ããããã£ã¦ãªã)
Tooling APIã®ã¯ã©ã¤ã¢ã³ãã¯EclipseProject
ã¢ãã«ããEclipseã®buildersã¨naturesã«å¯¾ãã¦ã¯ã¨ãªã¼ãããããã¨ãã§ããããã«ãªãã¾ããã
EclipseProject#getProjectNatures()
ããã³EclipseProject#getBuildCommands()
ã¡ã½ããã«ãã£ã¦ã¿ã¼ã²ããããã¸ã§ã¯ãã®buildersã¨naturesãåå¾ã§ãã¾ãããããã®å¤ã«ã¯Gradleã«ãã£ã¦è¨å®ãããnaturesãbuildersãå«ã¾ããä»ãeclipse
ãã©ã°ã¤ã³ã«ãã£ã¦ã«ã¹ã¿ãã¤ãºãããæ
å ±ãå«ã¾ãã¾ãã
ä¿®æ£ããããã°
- GRADLE-2356 -
zipTree
ã¡ã½ããã«ããSync
ã¿ã¹ã¯ã¯èªã¿åãå°ç¨ã®ä¸æãã¡ã¤ã«ãçæãã¾ãã - GRADLE-2959 -
zipTree
ã¡ã½ãããä¸æçãªèªã¿åãå°ç¨ã®ãã¡ã¤ã«ãä¸æ¸ãã§ããªã - GRADLE-3352 -
org.gradle.debug
ã·ã¹ãã ããããã£ãè¨å®ãã¦ãå¹ãã¦ããªã
å£ããå¯è½æ§ã®ããå¤æ´
nativeã½ããã¦ã§ã¢ã¢ãã«
NativeExecutableBinarySpec.executableFile
ã¯NativeExecutableBinarySpec.executable.file
ã«ãã£ã¦ã¢ã¯ã»ã¹ããããã«ãªãã¾ããNativeTestSuiteBinarySpec.executableFile
ã¯NativeTestSuiteBinarySpec.executable.file
ã«ãã£ã¦ã¢ã¯ã»ã¹ããããã«ãªãã¾ãã
ãã¼ã«ã®è¨å®ãä¾ãã°cppCompiler.args
ã¯Gradleã®æ¡å¼µã¡ã«ããºã ã«å¸åããã¦ãã¾ããProcessingTool
ã¢ã¯ã»ããµã¼ã¯NativeBinarySpec
ã«ç´æ¥å®è£
ããã¦ãããExtensionAware
ã®æ©è½ã¯ããå©ç¨ã§ãã¾ãããããã«ã¤ãã¦ã¯ãã«ãã¹ã¯ãªããã®å¤æ´ãå¿
è¦ãªãã¨æããã¾ãã
Javaã½ããã¦ã§ã¢ã¢ãã«ã¨Javaãã©ã°ã¤ã³ã®æ··åããã¸ã§ã¯ã
binariesã³ã³ããã¯ããé常ã®ãã©ã°ã¤ã³ã¹ãã¼ã¹ã¨åãé¢ããã¦ãããã¢ãã«ã«ã¼ã«å
ã§ã®ã¿åç
§ãããã¨ãå¯è½ã«ãªã£ã¦ãã¾ããbinaries
ããã¸ã§ã¯ãæ¡å¼µã¯ããããã¾ããã
ã¢ãã«ã»ã«ã¼ã«DSLã®å¤æ´
Gradle2.9ã«ã¦ãã¢ãã«DSLã¯ããå³å¯ã«ãªãã¾ãããmodel{}
ãããã¯ã®ãããã¬ãã«ã«è¨è¿°ãããã¨ã許ãããã®ã¯ã«ã¼ã«ã®å®ç¾©ã ãã§ãããã®ä»ã®è¦ç´ (ã¤ã¾ããif
ã¹ãã¼ãã¡ã³ããä½ããã®å¤æ°ãªã©)ã¯å©ç¨ãããã¨ãã§ãã¾ããã
ä¾ãã°ä¸è¨ã®model{}
ãããã¯ã®è¨è¿°ã¯ä¸å¯è½ã¨ãªãã¾ãã
model { if (someCondition) { tasks { create("myTask") } } }
ãã ããã«ã¼ã«å ã§ãä»»æã®ã¹ãã¼ãã¡ã³ãã®å é¨ã§ã®å©ç¨ã¯ç¾å¨ã®ã¨ããå¯è½ã§ãã(訳注ï¼ãããªè¨ãæ¹ã ãä»å¾ä½¿ããªããããã¿ããã§)
up-to-date
ãã§ãã¯ã®å¤æ´
ã¤ã³ã¯ãªã¡ã³ã¿ã«ãã«ãã®ããã©ã¼ãã³ã¹æ¹åã®çµæãã¿ã¹ã¯ã®up-to-date
ãã§ãã¯ã®æ¹æ³ã«å¤æ´ãå
¥ã£ã¦ãã¾ãã
zipTree
ãtarTree
ãTask.inputs
ã«ç¨ããå ´åãGradleã¯ã¢ã¼ã«ã¤ããä¸æçã«åãåºããã¨ã¯ããã¾ãããåç´ã«ã¢ã¼ã«ã¤ããã¡ã¤ã«ã®å¤æ´ãæ¯è¼ããã ãã«ãªã£ã¦ãã¾ããTask
ã§zipTree
ãtarTree
ãfilter
ãªã©ã¨ã¨ãã«å©ç¨ããå ´åã¯ãã¢ã¼ã«ã¤ããå¤æ´ãããã ãã§ãout-of-date
å¤å®ããã¾ãã- Gradleã¯ããã¾ã§ããã£ã¬ã¯ããªã¼ã®ä¸èº«ã«ãããã¦ã¯
up-to-date
ã®ãã§ãã¯å¯¾è±¡ã¨ãã¦èæ ®ãã¾ããã§ããããä»å¾ã¯èæ ®ããã¾ãã
å¤é¨ããã®è²¢ç®
- Raluca Sauciucã¯ãã¼ã¢ã³JVMã®AWTã·ã¹ãã ããããã£ã®è¨å®ã«é¢ããè²¢ç®ããã¦ããã¾ããã
æ¢ç¥ã®ä¸å ·å
ä»ã®ã¨ãããªã