사용자 도구

사이트 도구


gradle:propdeps

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
gradle:propdeps [2014/01/28 17:33]
kwon37xi
gradle:propdeps [2016/11/02 10:46] (현재)
kwon37xi
줄 1: 줄 1:
 ====== propdeps plugin ====== ====== propdeps plugin ======
-  * [[https://github.com/spring-projects/gradle-plugins/tree/master/propdeps-plugin|Propdeps-plugin]] +  * [[https://github.com/spring-projects/gradle-plugins/tree/master/propdeps-plugin|Propdeps-plugin]] [[gradle:dependencies|Gradle Dependencies]] 에서 ''provided'', ''optional'' 지원 플러그인. 
-  * Spring에서 만들어서 제공하고 있는 ''provided'', ''optional'' 지원 플러그인. +  * 이를 사용할 경우 IntelliJ IDEA의 기본 Gradle 플러그인으로는 ''provided''를 올바로 인식하지 않는다. 
-  * 이를 사용할 경우 IntelliJ IDEA의 기본 Gradle 플러그인은 사용할 수 없다.+  * Gradle 2.x 에서 ''compileOnly'' Scope가 생겼으므로 이 플러그인은 더이상 필요 을 것으로 보인다.
  
 ===== 설정 ===== ===== 설정 =====
-  * 버전 번호 주의할것. 문서상 버전은 최신이 아니다.+  * 버전 번호 주의할 것. 문서상 버전은 최신이 아니다. 
 +  * Gradle 2.x 사용시에는 최소 propDeps **''0.7''** 이상을 사용해야 한다.
  
 ===== provided ===== ===== provided =====
줄 13: 줄 14:
   * Maven의 ''<scope>compile</scope> <optional>true</optional>''   * Maven의 ''<scope>compile</scope> <optional>true</optional>''
  
 +===== uploadArchives =====
 +현재(0.5) Propdeps 플러그인은 ''idea'', ''eclipse'', ''install''에 대해서만 올바르게 ''optional''과 ''provided''를 제공하고 ''uploadArchives''에 대해서는 관련 처리를 하지 않고 있다. 어쨌든 ''provided''는 올바르게 생성되며 ''optional''은 다음 처리를 필요로 한다.
 +<code groovy>
 +uploadArchives {
 +    repositories {
 +        mavenDeployer {
 +            repository(url: 'http://어쩌구/releases/') {
 +                authentication(userName: repoUserName, password: repoPassword)
 +            }
 +            snapshotRepository(url: 'http://어쩌구/snapshot/') {
 +                authentication(userName: repoUserName, password: repoPassword)
 +            }
 +            // POM 의존성 객체 (MavenPom)에 optional = true 지정 : <optional>true</optional> 생성
 +            pom.whenConfigured { pom ->
 +                pom.dependencies.findAll { dep -> dep.scope == 'optional'}.each { dep ->
 +                    dep.scope = 'compile'
 +                    dep.optional = true
 +                }
 +            }
 +        }
 +    }
 +}
 +</code>
 +  * [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/artifacts/maven/MavenPom.html|MavenPom]]
 +
 +위 코드는, propdeps에서 [[https://github.com/gradle/gradle/blob/master/subprojects/maven/src/main/groovy/org/gradle/api/plugins/MavenPlugin.java|MavenPlugin.java]], [[https://github.com/gradle/gradle/blob/master/subprojects/core/src/main/groovy/org/gradle/configuration/project/ProjectConfigurationActionContainer.java|ProjectConfigurationActionContainer]]를 주입받아 처리하면 될 것으로 보임.
 +[[https://github.com/gradle/gradle/blob/master/design-docs/dependency-injection-for-plugins.md|Plugin dependency injection]]
gradle/propdeps.1390898006.txt.gz · 마지막으로 수정됨: 2014/01/28 17:33 저자 kwon37xi