====== Gradle Plugins ====== * [[http://www.gradle.org/docs/current/userguide/plugins.html|Gradle Plugins]] * [[http://www.gradle.org/docs/current/userguide/standard_plugins.html|표준 Gradle Plugins]] * [[http://www.gradle.org/docs/current/userguide/custom_plugins.html|Write Custom Plugins]] * [[http://wiki.gradle.org/display/GRADLE/Plugins|다양한 Gradle Plugins]] * [[http://gradle.org/gradle-plugin-best-practices-netflix-meetup/|Gradle Plugin Best Practices (Netflix Meetup)]] * [[http://nebula-plugins.github.io/|Nebula: A collection of Gradle plugins, built by Netflix]] ===== Plugin Dependency Repository ===== * Gradle plugin 을 가져오는 repository 를 명시적으로 지정하고자 한다면 ''settings.gradle''에 다음과 같이 설정한다. (''init.gradle''을 사용할 수도 있음) pluginManagement { repositories { maven { url "http://자기의MavenRepos주소" } gradlePluginPortal() // https://plugins.gradle.org/m2/ } } * 자신의 repository ([[:nexus|SonaType Nexus]] 등)에 ''https://plugins.gradle.org/m2/''를 proxy로 추가해둔다. ===== 플러그인 적용 ===== * ''Project.apply()'' 메소드를 사용한다. // 짧은 명칭 사용 apply plugin: 'java' // FQCN 사용 apply plugin: org.gradle.api.plugins.JavaPlugin // JavaPlugin은 자동 import 상태이므로 클래스만 써도 된다. apply plugin: JavaPlugin * 플러그인은 한 번 적용하면 그 뒤로 여러번 적용해도 아무 효과가 없다. * 플러그인 클래스는 [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/Plugin.html|org.gradle.api.Plugin]] 인터페이스 구현체이다. ===== 플러그인으로 할 수 있는 일 ===== * 프로젝트에 태스크 추가 * 적합한 기본값으로 태스크를 미리 설정해 둠 * 프로젝트에 의존성 추가 * 확장을 통해 기존 타입에 다른 프라퍼티와 메소드 추가 apply plugin: 'java' // java 플러그인에 추가된 compileJava.destinationDir, processResources.destinationDir 프라퍼티 확인해 보기 task show << { println relativePath(compileJava.destinationDir) println relativePath(processResources.destinationDir) } ===== 관례(Convention) ===== * 플러그인들은 기본적으로 적합한 기본값을 갖도록 설정되어 있다. * 이러한 값을 바꿀 수 있다. apply plugin: 'java' compileJava.destinationDir = file("$buildDir/output/classes") task show << { println relativePath(compileJava.destinationDir) } ===== 플러그인들 ===== * [[https://github.com/eriwen/gradle-css-plugin|Gradle CSS Plugin]] CSS Plugin * [[https://github.com/eriwen/gradle-js-plugin|Gradle JS Plugin]] Javascript Plugin * [[https://github.com/ajoberstar/gradle-git|Gradle-Git]] * [[https://github.com/townsfolk/gradle-templates|Gradle Templates]] 프로젝트 시작시 구조를 잡아주는 플러그인 * [[https://github.com/stevesaliman/gradle-properties-plugin|Gradle Properties Plugin]] * [[https://github.com/marcoVermeulen/gradle-spawn-plugin|Gradle Spawn Plugin]] Unix 명령 실행/중단 * [[https://github.com/ben-manes/gradle-versions-plugin|gradle version plugin]] 의존성 변경을 추적하고 문서화 해줌 * [[https://github.com/ZeroBrain/gradle-play-publisher|Gradle Android Play Publisher]]