Gradleã«é¢ããå€ãã®èšäº
ãæžãã
ãŠããŸãã ç§ã®å Žåããã®ãããªæ®µéçãªæ瀺ã貯éç®±ã«è¿œå ããããšæããŸãããããèªãã§ãGradleãåããŠäœ¿çšãã人ããè©ŠããŠãããã®ããŒã«ãèªåã§å匷ãç¶ããããšãã§ããŸãã
ãã®èšäºã§ã¯ããã®ãããžã§ã¯ããã«ããŒã®gradleãã©ã°ã€ã³ãã¿ã¹ã¯ãäŸåé¢ä¿ãèªåãã¹ããªã©ã®ãããã¯ã«ã€ããŠè©³ãã説æããŸããã ãŸããåãããã¯ã¯åå¥ã®èšäºãŸãã¯äžé£ã®èšäºã«å€ãããã®ã§ããã次ã«ãããã«ã¯ãããã®ãããã¯ã«é¢ããèšäºãæ¢ã«ãããŸããããšãã°ã
GradleïŒTasks Are Code ã
GradleïŒBetter Way To Buildã§ãã ãŸããGradleã®å
¬åŒWebãµã€ãã«ã¯ãçŸããæžããã
GradleãŠãŒã¶ãŒã¬ã€ãããããŸãã ã¿ã¹ã¯ã®åœé¢ã®è§£æ±ºçã«çŠç¹ãåœãŠããã¹ãŠã®é¢é£ãããã¯ã¯ãã®ã¿ã¹ã¯èªäœã®ãã¬ãŒã ã¯ãŒã¯ã§èª¬æããŸãã
æåã«ç®æšã決ããŸããåºå£ã§äœãååŸããŸããïŒ ãããŠãç®æšã¯èšäºã®ã¿ã€ãã«ã«ç€ºãããŠããŸãã Gradleã䜿çšããŠæ§ç¯ãããããã€ãã®ã¢ãžã¥ãŒã«ãå«ããããžã§ã¯ããååŸããŸãã ããã§ã¯ãå§ããŸãããã
ã¹ããã1. gradleãã€ã³ã¹ããŒã«ãã
æ³šïŒ èšäºã®ãã¡ã€ã«ãããŠã³ããŒãããŠgradleããåçããããå ŽåããŸãã¯ãããžã§ã¯ãã®ã«ãŒãã«ããžãã¯ãã¡ã€ã«gradlewïŒgradlew.batïŒã䜿çšããŠä»ã®äººã®ãœãŒã¹ãååŸããå Žåãgradleãã€ã³ã¹ããŒã«ããå¿
èŠã¯ãããŸãããGradleã¯ãGradle
ããŠã³ããŒãããŒãžããææ°ããŒãžã§ã³ãããŠã³ããŒããããããæ°ã«å
¥ãã®OSã®ããã±ãŒãžãããŒãžã£ãŒã䜿çšããŠã€ã³ã¹ããŒã«ã§ããŸãïŒæ³šïŒMac OSã«ã¯brewçµç±ã§ãDebianã«ã¯æšæºãœãŒã¹ããapt-getçµç±ã§ã€ã³ã¹ããŒã«ããŸããïŒ
æåã®ã¹ãããã®çµæïŒ
$ gradle -version
ã¹ããã2.ãããžã§ã¯ãããã©ã°ã€ã³ãã©ãããŒã空ã«ãã
ãããžã§ã¯ããã©ã«ããŒãäœæãããã®ã«ãŒãã«æ¬¡ã®å
容ã®
build.gradle
ãã¡ã€ã«ãäœæããŸãã
{project_path} /build.gralde apply plugin: âjavaâ apply plugin: âapplicationâ task wrapper(type: Wrapper) { gradleVersion = '1.12' }
ãã¡ã€ã«ã«æžã蟌ãã å
容ã詳ããèŠãŠã¿ãŸãããã åçèšèªGroovyã䜿çšããŸãã gradleã§æ¬æ Œçãªããã°ã©ãã³ã°èšèªã䜿çšãããšã宣èšåèšèªã䜿çšããããã±ãŒãžãã«ããŒã«æ¯ã¹ãŠèªç±åºŠãé«ããªããŸãã
ãã®ãã¡ã€ã«ã«ã¯ã
java
ãã©ã°ã€ã³ãš
application
ãã©ã°ã€ã³ãå«ãŸããŠããŸãã
java
ãã©ã°ã€ã³ã«ã¯ãjarïŒjarã¢ãŒã«ã€ããã³ã³ãã€ã«ããïŒãcompileJavaïŒãœãŒã¹ã³ãŒããã³ã³ãã€ã«ãããªã©ïŒãªã©ã®äŸ¿å©ãªã¿ã¹ã¯ãå«ãŸããŠã
ãŸã ããã©ã°ã€ã³ã®è©³çŽ°ã«ã€ããŠã¯ã
ãã¡ããã芧ãã ãã ã
application
ãã©ã°ã€ã³ã«ã¯æ¬¡ã®ã¿ã¹ã¯ãå«ãŸã
application
ãrun-
application
èµ·åããŸãã installApp-ã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã¥ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ããŸãããã®ã¿ã¹ã¯ã¯ã* nixããã³Windowsçšã®å®è¡å¯èœãã¡ã€ã«ïŒbatãã¡ã€ã«ïŒãäœæããŸãã distZip-ã¢ããªã±ãŒã·ã§ã³ãzipã¢ãŒã«ã€ãã«åéãããã¹ãŠã®jarãã¡ã€ã«ãšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã åºæã®ã¹ã¯ãªãããããã«é
眮ããŸãã ãã©ã°ã€ã³ã®è©³çŽ°ã«ã€ããŠã¯ã
ããã¥ã¡ã³ããåç
§ããŠãã ãã ã
次ã«ã
wrapper
ã¿ã¹ã¯ã«ã€ããŠè©³ãã説æããŸãã ãã®éåžžã«äŸ¿å©ãªã¿ã¹ã¯ã¯ãããããããã°ã©ããŒã®ç掻ã楜ã«ããããã«èšèšãããæãç¬åµçãªãœãªã¥ãŒã·ã§ã³ã§ãã
$ gradle wrapper
ãããšã次ã®çµæãåŸãããŸãã
$ gradle wrapper :wrapper BUILD SUCCESSFUL Total time: 7.991 secs
$ ls -a . .. .gradle build.gradle gradle gradlew gradlew.bat
ãã®ã¹ã¯ãªããã¯ã* nixã®gradlewå®è¡å¯èœãã¡ã€ã«ãWindowsã®gradlew.batãããã³gradleãã©ã«ããŒãš.gradleãã©ã«ããŒãäœæããããšãããããŸãã é衚瀺ã®.gradleãã©ã«ããŒã¯ããªããžããªãŒããçç¥ããããšãã§ããäŸåã©ã€ãã©ãªãŒãå«ãŸããŠããŸãã ãã¹ãŠã®åºæ¬ã¯ãgradleãšgradlewãã¡ã€ã«èªäœã«ãããŸãã ããã§ãé©åãªããŒãžã§ã³ã®jdkãæã£ãŠãã人ã«ãããžã§ã¯ããå®å
šã«æž¡ãããšãã§ã
./gradlew
䜿çšããŠãããžã§ã¯ããã³ã³ãã€ã«ãã¢ã»ã³ãã«ãã€ã³ã¹ããŒã«ã§ããŸãã gradleã®ç§ã®ããŒãžã§ã³ïŒäžèšã®
$ gradle -version
çµæãåç
§ïŒã¯build.gradleãã¡ã€ã«ã§æå®ãããã®ãšã¯ç°ãªããŸãããããã¯æãããããšã§ã¯ãããŸãããã©ãããŒã¿ã¹ã¯ãå®è¡ããåŸãå¿
èŠãªgradleã®ããŒãžã§ã³ãååŸããããã§ãã
$ ./gradlew -version
ããã§ã
gradlew
代ããã«
gradle
gradlew
ãå®å
šã«äœ¿çš
gradlew
ãŸãã ãšããã§ããã©ã¡ãŒã¿ãŒãªãã§
$ ./gradlew
ãå®è¡ãããšã
.gralde
ãã©ã«ããŒãäœæããã
.gralde
ãã¹ãŠã®äŸåã©ã€ãã©ãªãŒãããŠã³ããŒããããŸãïŒä»¥äžã®äŸåé¢ä¿ã«ã€ããŠïŒã ããããgradleïŒgradlewïŒã®éå§æã«äŸåé¢ä¿ããã§ãã¯ãããæ¬ èœããŠãããã¡ã€ã«ãããŠã³ããŒããããããããã®ã³ãã³ãã®å®è¡ã¯å¿
èŠãããŸããã ãããã£ãŠãgradlewãã¡ã€ã«ãé
眮ãããŠãããããžã§ã¯ããåãåã£ãããããã«ç®çã®ã¿ã¹ã¯ãèµ·åã§ããŸãããã®ãªã¹ãã¯ãã³ãã³ã
./gradlew tasks
ååŸã§ããŸãã
2çªç®ã®ã¹ãããã®çµæïŒçµè«ã¯æžããŸãïŒïŒ
$ ./gradlew tasks :tasks ------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------ Application tasks ----------------- distTar - Bundles the project as a JVM application with libs and OS specific scripts. distZip - Bundles the project as a JVM application with libs and OS specific scripts. installApp - Installs the project as a JVM application along with libs and OS specific scripts. run - Runs this project as a JVM application ... Other tasks ----------- wrapper ... To see all tasks and more detail, run with --all. BUILD SUCCESSFUL Total time: 7.808 secs
ã¹ããã3.空çœãåãã
ãã®æ®µéã§ããã§ã«ããã€ãã®
gradle
ã¿ã¹ã¯ãå®è¡ã§ããŸãã jarãã¡ã€ã«ãã³ã³ãã€ã«ããããšãã§ããŸãããããã«ã¯ç©ºã®ãããã§ã¹ããããããŸããã ã³ãŒããäœæããŸãã Gradleã¯ããã©ã«ãã§
Mavenãšåããã£ã¬ã¯ããªæ§é ã䜿çšããŸãã
src -main -java -resources -test -java -resources
main/java
ã¯ããã°ã©ã ã®javaãã¡ã€ã«ã
main/resources
ã¯æ®ãã®ãã¡ã€ã«ïŒ* .propertiesã* .xmlã* .imgãªã©ïŒã§ãã
test
ã¯ã
test
ã«å¿
èŠãªãã¡ã€ã«ãå«ãŸããŠããŸãã
ãã®èšäºã§ã¯ãã¹ãã¯èæ
®ãããªãããããã¹ãŠã®ãµããã©ã«ããŒã§
src/main
ãã©ã«ããŒãäœæããã¢ããªã±ãŒã·ã§ã³ã®äœæãéå§ããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯Hello Worldã§ã
Log4jã©ã€ãã©ãªã䜿çšããŸãã äŸåé¢ä¿ãgradleã§ã©ã®ããã«æ©èœããããç解ããã ãã§ãã
build.gradle
ãã¡ã€ã«ã«å€æŽãå ãã
src/main/java
ãã©ã«ããŒå
ã®ã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã¯ã©ã¹ãšèšå®ãã¡ã€ã«Log4j
src/main/resources/log4j.xml
䜿çšããŠ
com/example/Main.java
ãã¡ã€ã«ãäœæããŸãã ãããŠã
gradle.properties
ãã¡ã€ã«ïŒãªãã·ã§ã³ã以äžã®è©³çŽ°ïŒ
{project_path} /build.gradle apply plugin: "java" apply plugin: "application" mainClassName = "com.example.Main" sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 repositories { mavenCentral() } dependencies { compile "log4j:log4j:1.2.17" } jar { manifest.attributes("Main-Class": mainClassName); } task wrapper(type: Wrapper) { gradleVersion = "1.12" }
{project_path} /gradle.properties org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home/
{project_path} /src/main/java/com/example/Main.java package com.example; import org.apache.log4j.Logger; public class Main { private static final Logger LOG = Logger.getLogger(Main.class); public static void main(String[] args) { LOG.info("Application started"); System.out.println("I'm the main project"); LOG.info("Application finished"); } }
{project_path} /src/main/resources/log4j.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%p %c: %m%n"/> </layout> </appender> <root> <priority value ="debug" /> <appender-ref ref="console" /> </root> </log4j:configuration>
build.gradle
ãã¡ã€ã«ãžã®å€æŽãæ€èšããŠãã ããã å€æ°
mainClassName
ãè¿œå ããŸããã ã¢ããªã±ãŒã·ã§ã³ã®ã¡ã€ã³ã¯ã©ã¹ã瀺ãã
run
ã¿ã¹ã¯ã§
application
ãã©ã°ã€ã³ã«ãã£ãŠäœ¿çšãããŸãã èµ·åãããã®ã¯ãã®ã¯ã©ã¹ã§ãã
sourceCompatibility
targetCompatibility
ãš
targetCompatibility
ãè¿œå ããå€
JavaVersion.VERSION_1_7
å²ãåœãŠãŸããã ãããã¯
java
ãã©ã°ã€ã³ã®å€æ°ã§ããããã«ãæã«å¿
èŠãªjdkã®ããŒãžã§ã³ã瀺ããŸãã 次ã®ãããã¯ã¯
repositories
ã ãã®ãããã¯ã§ã¯ã
MavenãªããžããªãŒãæ¥ç¶ããŸãã Gradleã¯åœŒãšéåžžã«ãå奜çãã§ãã
dependencies
ãããã¯ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®äŸåé¢ä¿ãå«ãŸããŠããŸãã
ããã¥ã¡ã³ãã®èšå®ã®åŸ®åŠããèŠ
ãŸã ã ããã§ã
compile
ã¿ã¹ã¯ã«ã¯log4jãå¿
èŠã§ããããšã瀺ããŸãã ãã®äŸã«ã¯ãç°¡åãªæ§æããããŸãã 詳现ãªããŒãžã§ã³ãæžããšã次ã®ããã«ãªããŸãã
complie group: 'log4j', name: 'log4j', version: '1.2.17'
æ¯èŒã®ããã«ãMavenã®åæ§ã®ãããã¯ïŒ
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
compile files('libs/a.jar', 'libs/b.jar')
ããã³
compile project(':library_project')
ãµããããžã§ã¯ãã®
compile project(':library_project')
äŸåé¢ä¿ãæ§æããããšãã§ããŸãã
build.gradle
ãžã®æåŸã®è¿œå ã¯ã
jar
ãããã¯ã§ãã ãŸãã
java
ãã©ã°ã€ã³ãæããŸãã jarãã¡ã€ã«ãæ§ç¯ããããã®è¿œå æ
å ±ãå«ãŸããŠããŸãã ãã®å Žåãäžèšã§å®£èšãã
mainClassName
å€æ°ã䜿çšããŠãã¡ã€ã³ã¯ã©ã¹ããããã§ã¹ãã«è¿œå ããŸãã
以äžã¯ããªãã·ã§ã³ã®
gradle.properties
ãã¡ã€ã«ã§ãã ãã®ãã¡ã€ã«ã®èª¬æã¯ããã¥ã¡ã³ãå
šäœã«æ£ãã°ã£ãŠã
ãŸã ã
ãããš
ããã«å°ããã
ãŸã ã ãã®å Žåãå®éã«ã¯
JAVA_HOME
å€æ°ããªãŒããŒã©ã€ãããŠã
JAVA_HOME
ã ç§ã®å Žåãèšäºã®åé ã§æ³šæããããšãã§ããããã«ãjdkã®è€æ°ã®ããŒãžã§ã³ãããå Žåãããã¯åœãŠã¯ãŸããŸãã
$ gradle -version
ã¯ã
JVM: 1.8.0_05 (Oracle Corporation 25.5-b02)
ããŒãžã§ã³
JVM: 1.8.0_05 (Oracle Corporation 25.5-b02)
ãŸãã
src/main/java/Main.java
ããã³
src/main/resources/log4j.xml
ã«ã€ããŠ
src/main/java/Main.java
ããã®ã¯ç¡æå³ã ãšæããŸãããã¹ãŠãéåžžã«åçŽã ããã§ãã Loggerã«2ã€ã®ã¡ãã»ãŒãžãéä¿¡ããŸãããI'm the main projectããšããã¡ãã»ãŒãžãã³ã³ãœãŒã«ã«è¡šç€ºãããŸãã log4jèšå®ãã¡ã€ã«ã¯ããã¬ãŒãã³ã³ãœãŒã«ã«ã¡ãã»ãŒãžãåºåããããšã瀺ããŠããŸãã
3çªç®ã®ã¹ãããã®çµæïŒ
$ ./gradlew run :compileJava Download http://repo1.maven.org/maven2/log4j/log4j/1.2.17/log4j-1.2.17.jar :processResources :classes :run INFO com.example.Main: Application started I'm the main project INFO com.example.Main: Application finished BUILD SUCCESSFUL Total time: 14.627 secs
äžè¶³ããŠããã©ã€ãã©ãªãããŠã³ããŒããããŠããããã®äœ¿çšãå®èšŒãããŠããããšãããããŸãã
ã¹ããã4.ç®æšã«å°éãã
ç§ãã¡ã¯ãã§ã«ãgradleã§åäœãããã«ãããå®è¡ãããããžã§ã¯ããæã£ãŠããŸãã æå°ã®è©³çŽ°ãå®æãããããã«æ®ã£ãŠããŸãïŒgradleã®çšèªã䜿çšããŠãèšäºãŸãã¯
multi-projectã®ã¿ã€ãã«ã«èšèŒãããŠãã
ãã«ãã¢ãžã¥ãŒã«ãå®è£
ããŸãã ãããžã§ã¯ãã®ã«ãŒãã«
main_project
ãš
library_project
2ã€ã®ãã£ã¬ã¯ããªãäœæããŸãã
src
ãã©ã«ããŒãš
build.gradle
ãã¡ã€ã«ãäœæããã°ããã®
main_project
ãã£ã¬ã¯ããªãŒã«
main_project
ããã«ãŒãã«æ¬¡ã®å
容ãæã€æ°ãã
settings.gradle
ãã¡ã€ã«ãäœæã
settings.gradle
ïŒãã®ãã¡ã€ã«ã®è©³çŽ°ã¯
ãã¡ã ïŒã
{project_path} /settings.gradle rootProject.name = 'Gradle_Multiproject' include 'main_project'
ãã®ãã¡ã€ã«ã§ã¯ããããžã§ã¯ãã®ååãšæ¥ç¶ãããã©ã«ããŒãæå®ããŸãïŒå®éã«ã¯ç¬ç«ããgradleãããžã§ã¯ãïŒã ãã®æ®µéã§ã¯ã
main_project
ãã©ã«ããŒã1ã€å¿
èŠã§ãã ãã®ãããªå€æŽã®åŸã
$ ./gradlew run
ãŸãã¯ç¹å®ã®ãµããããžã§ã¯ã
$ ./gradlew main_project:run
ãã¹ããã3ã®æåŸãšåãçµæãååŸã§ããŸããã€ãŸããäœæ¥äžã®ãããžã§ã¯ãã§ãã ä»ã®ãã¹ãŠã®jarãbuildãinstallAppã³ãã³ããªã©ãå®è¡ã§ããŸãã ç¹å®ã®ãµããããžã§ã¯ããæå®ããªãå ŽåãGradleã¯ããã®ã¿ã¹ã¯ãæã€ãã¹ãŠã®æ¥ç¶ããããµããããžã§ã¯ãã§ã¿ã¹ã¯ãéå§ããŸãïŒããšãã°ãã¢ããªã±ãŒã·ã§ã³ãã©ã°ã€ã³ã1ã€ã®ãµããããžã§ã¯ãã®ã¿ã«æ¥ç¶ãããŠããå Žåãmain_projectããããã³ãã³ã
$ ./gradlew run
ã¯ãã®ãµããããžã§ã¯ãã®å®è¡ã®ã¿ãå®è¡ããŸãïŒ
ããã§ã
library_project
ã³ãŒããäœæããŸãã
build.gradle
ãš
src/main/java/com/example/library/Simple.java
äœæããŸã
{project_path} /library_project/build.gradle apply plugin: "java" sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7
{project_path} /library_project/src/main/java/com/example/library/Simple.java package com.example.library; public class Simple { private int value; public int getValue() { return value; } public void setValue(int value) { this.value = value; } }
ãã®ãµããããžã§ã¯ãã®
build.gradle
ã¯ã¯ããã«ç°¡åã§ãã Javaãã©ã°ã€ã³ã䜿çšããå€æ°ãJDKããŒãžã§ã³ã§èšå®ããŸãã ãã®èšäºã§ã¯ããã§ååã§ãã ããã§ãgradleã«library_project
library_project
ã«ã€ããŠç¥ã£ãŠãããããã®ã§ãããã
settings.gradle
ãã¡ã€ã«ã§èª¬æããŸãã
{project_path} /settings.gradle rootProject.name = 'Gradle_Multiproject' include 'main_project', 'library_project'
ããã§ãã³ãã³ã
$ ./gradlew library_project:jar
ã䜿çšããŠãã©ã€ãã©ãªãå«ãjarãã¡ã€ã«ãã³ã³ãã€ã«ã§ããŸãã
$ ./gradlew library_project:jar :library_project:compileJava :library_project:processResources UP-TO-DATE :library_project:classes :library_project:jar BUILD SUCCESSFUL Total time: 10.061 secs
çµæã®ãã¡ã€ã«ã¯
{project_path}/library_project/build/libs/library_project.jar
ãŸãã
次ã«ã
Simple
ã¯ã©ã¹ã®äœ¿çšã
main_project
è¿œå ããŸãããã ãããè¡ãã«ã¯ã
{project_path}/main_project/build.gradle
ãã¡ã€ã«ã®
dependencies
ãããã¯ã«ã©ã€ã³
compile project(":library_project")
ã
{project_path}/main_project/build.gradle
ãŸããããã¯ããã®ã¢ãžã¥ãŒã«ã§ã³ã³ãã€ã«ã¿ã¹ã¯ãå®è¡ããããã«
library_project
ãããžã§ã¯ããå¿
èŠã§ããããšã瀺ããŸãã
MiniMããã®è¿œå ïŒ
gradleã§ã¯ãã/ãã®ä»£ããã«èšå·ãïŒãã䜿çšãããããåå²ããæ§é ã®å Žåããããžã§ã¯ããªã³ã¯ã¯æ¬¡ã®ããã«ãªããŸãã:: loadersïŒxml-loader
{project_path} /main_project/build.gradle ïŒ
dependencies
ãããã¯ïŒ
dependencies { compile "log4j:log4j:1.2.17" compile project(":library_project") }
{project_path} /main_project/src/main/java/com/example/Main.java package com.example; import org.apache.log4j.Logger; import com.example.library.Simple; public class Main { private static final Logger LOG = Logger.getLogger(Main.class); public static void main(String[] args) { LOG.info("Application started"); System.out.println("I'm the main project"); Simple simple = new Simple(); simple.setValue(10); System.out.println("Value from Simple: " + simple.getValue()); LOG.info("Application finished"); } }
確èªã§ããŸãã
4çªç®ã®ã¹ãããã®çµæïŒ
$ ./gradlew run :library_project:compileJava UP-TO-DATE :library_project:processResources UP-TO-DATE :library_project:classes UP-TO-DATE :library_project:jar UP-TO-DATE :main_project:compileJava :main_project:processResources UP-TO-DATE :main_project:classes :main_project:run INFO com.example.Main: Application started I'm the main project Value from Simple: 10 INFO com.example.Main: Application finished BUILD SUCCESSFUL Total time: 11.022 secs
ã¹ããã5ïŒæçµïŒã ãã¿ãåãé€ã
äž»ãªç®æšã¯éæãããŸãããããã®æ®µéã§ã¯ããã«ããã¡ã€ã«å
ã®æ
å ±ã®è€è£œãgradleã®ããæ·±ãèšå®ãããã«ã¯äœãããã«æ€èšãããã«ã€ããŠãããªãè«ççãªçåãçããå¯èœæ§ããããŸãã ç¬ç«ããåŠç¿ã«ã€ããŠã¯ãèšäºã®æåŸã«ãããªã³ã¯ã®å
容ãèªãããšããå§ãããŸãã ãããŸã§ã¯ããããžã§ã¯ãã®ã«ãŒãã«
build.gradle
ãäœæããæ®ãã®ãã«ããã¡ã€ã«ã®å
容ãå€æŽããŠããã«ããã¡ã€ã«ãæŽçããŸãããã
{project_path} /build.gradle apply plugin: "idea" apply plugin: "eclipse" subprojects { apply plugin: "java" tasks.withType(JavaCompile) { sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 } repositories { mavenCentral() } } task wrapper(type: Wrapper) { gradleVersion = "1.12" }
{project_path} /main_project/build.gradle apply plugin: "application" version = '1.0' mainClassName = "com.example.Main" dependencies { compile "log4j:log4j:1.2.17" compile project(":library_project") } jar { manifest.attributes("Main-Class": mainClassName); }
{project_path} /build.gradle version = "1.1_beta"
ã«ãŒã
build.gradle
ã«ã¯ããã¹ãŠã®ãããžã§ã¯ãã«é©çšããããã®ïŒå®éããã¹ãŠã®èšå®ã¯äžè¬çã«ä¿åã§ããŸããã倧ããªãã¡ã€ã«ãåé¢ããããšã奜ã¿ãŸãïŒããã³ãµããããžã§ã¯ãã«äžèŠãªãã®ãä¿åããŸããããšãã°ã1ã€ã®ã©ãããŒã®ã¿ãå¿
èŠã§ããã«ãŒãã§ã
subprojects
ãããã¯ã«ã
subprojects
ã®èšå®ãé
眮ããŸããã€ãŸããjavaãã©ã°ã€ã³ãæ¥ç¶ããŸãã誰ããå¿
èŠã§ãã jdkããŒãžã§ã³ãèšå®ããŸãã MavenãªããžããªãŒãæ¥ç¶ããŸãã ãŸãããã®ãã¡ã€ã«ã§ã¯ã
Ideaãã©ã°ã€ã³ãš
Eclipseãã©ã°ã€ã³ãæ¥ç¶ããŸãã ãããã®ãã©ã°ã€ã³ã«ã¯ã察å¿ããIDEã®ãããžã§ã¯ããã¡ã€ã«ãçæããããã®ã¿ã¹ã¯ãå«ãŸããŠããŸãã ãããŠãããã§ã©ãããŒã¿ã¹ã¯ã転éããŸãã ãã¹ãŠã«å
±éã®gradlewãã¡ã€ã«ãäœæããã«ã¯ãã«ãŒãã§ã®ã¿å¿
èŠã§ãã
ãµããããžã§ã¯ãã§ã¯ãäžèŠãªãã®ããã¹ãŠåé€ãã
version
å€æ°ãè¿œå ããŸããã ãã®å€æ°ã®å€ã¯jarãã¡ã€ã«ã«è¿œå ãããŸããããšãã°ãlibrary_project.jarã®ä»£ããã«library_project-1.1.beta.jarãäœæãããŸãã
subprojects
ãããã¯ã«å ããŠã
allprojects
ãŸãã¯
project(':project_name')
䜿çšã§ããŸãã 詳现ã¯
ãã¡ã ã
ããã§çµãããŸãã ãã®èšäºãGradleã«ãªãã¿ã®ãªã人ã
ã®é¢å¿ãåèµ·ãããã詳现ãªèª¿æ»ãšãã®åŸã®ãããžã§ã¯ãã§ã®ãã®ããŒã«ã®äœ¿çšãä¿ãããšãé¡ã£ãŠããŸãã
ãæž
èŽããããšãããããŸããã
è¿œå ïŒMiniM ïŒ
gradleã§ã¯ãã/ãã®ä»£ããã«èšå·ãïŒãã䜿çšãããããåå²æ§é ã®å Žåããããžã§ã¯ããªã³ã¯ã¯æ¬¡ã®ããã«ãªããŸãã:: loadersïŒxml-loader
leventov ïŒ
idea
ãã©ã°ã€ã³ã«
idea
ãŸãã
issues.gradle.org/browse/GRADLE-1041 ãæåŸã®ã³ã¡ã³ãã«ã¯è§£æ±ºçããããŸãã
䟿å©ãªãªã³ã¯
bitbucketã®èšäº ïŒ
zipã¢ãŒã«ã€ã ïŒã§
äœæããããããžã§ã¯ãã®ãœãŒã¹ã°ã©ãã«GradleãŠãŒã¶ãŒã¬ã€ãApacheãã®ã³ã°ãµãŒãã¹Apache MavenGroovyèšèª