사용자 도구

사이트 도구


gradle:customplugins

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
gradle:customplugins [2012/10/06 21:06]
kwon37xi
gradle:customplugins [2020/05/24 20:43] (현재)
kwon37xi
줄 77: 줄 77:
 종종 지정할 프라퍼티가 많은 경우 확장 객체에 구성 클로저 블록을 추가하여 한번에 설정할 수 있도록 해준다. 종종 지정할 프라퍼티가 많은 경우 확장 객체에 구성 클로저 블록을 추가하여 한번에 설정할 수 있도록 해준다.
  
-  * 구성 클로를 사용하는 플러그인 ''build.gradle'' <code groovy>+  * 구성 클로를 사용하는 플러그인 ''build.gradle'' <code groovy>
 apply plugin: GreetingPlugin apply plugin: GreetingPlugin
  
줄 199: 줄 199:
  
   * 도메인 객체를 다루는 ''build.gradle'' <code groovy>   * 도메인 객체를 다루는 ''build.gradle'' <code groovy>
-apply plugin: DocumentationPlugin+apply plugin: DocumentationPlugin // DocumentaionPlugin.apply()가 실행된다.
  
 +// books NamedDomainObjectContainer 값을 구성한다. apply보다 나중에 실행되지만 'books.all { }'의 행위가 다 적용된다.
 books { books {
     quickStart {     quickStart {
줄 250: 줄 251:
 [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/NamedDomainObjectContainer.html|NamedDomainObjectContainer]]는 [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/DomainObjectCollection.html|DomainObjectCollection]]을 상속하고 있다. [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/DomainObjectCollection.html#all%28org.gradle.api.Action%29|DomainObjectCollection.all()]] 메소드는 컬렉션에 현재 있는 항목들과 그 이후 추가될 항목들까지 돌면서 클로저의 내용을 실행한다. 따라서 여기서 ''books'' 선언이 플러그인 적용보다 늦게 발생했으나 ''books.all {}'' 블럭의 내용이 모두 자동으로 실행되게 된다. [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/NamedDomainObjectContainer.html|NamedDomainObjectContainer]]는 [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/DomainObjectCollection.html|DomainObjectCollection]]을 상속하고 있다. [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/DomainObjectCollection.html#all%28org.gradle.api.Action%29|DomainObjectCollection.all()]] 메소드는 컬렉션에 현재 있는 항목들과 그 이후 추가될 항목들까지 돌면서 클로저의 내용을 실행한다. 따라서 여기서 ''books'' 선언이 플러그인 적용보다 늦게 발생했으나 ''books.all {}'' 블럭의 내용이 모두 자동으로 실행되게 된다.
  
 +===== 태스크간의 의존성 =====
 +플러그인 태스크 간의 의존성은 다음과 같은 형태로 정의할 수 있다.
 +
 +<code groovy>
 +project.task('sometask') {
 +    dependsOn(project.tasks.a, project.tasks.b)
 +}
 +</code>
 +
 +===== 플러그인에 의존성 주입 =====
 +  * [[https://github.com/gradle/gradle/blob/master/design-docs/dependency-injection-for-plugins.md|플러그인 개발시 필요한 의존성을 생성자를 통해 주입하기]]
 +  * ''@Inject'' 애노테이션을 사용한다.
 +  * [[https://github.com/gradle/gradle/blob/master/subprojects/maven/src/main/groovy/org/gradle/api/plugins/MavenPlugin.java|MavenPlugin.java]]에서 ''@Inject'' 사용예를 볼 수 있다.
 +
 +===== 참조 =====
 +  * [[https://dzone.com/articles/functional-tests-gradle-plugin|How to Test Gradle Plugins - DZone Java]]
gradle/customplugins.1349525174.txt.gz · 마지막으로 수정됨: 2012/10/06 21:06 저자 kwon37xi