====== propdeps plugin ======
* [[https://github.com/spring-projects/gradle-plugins/tree/master/propdeps-plugin|Propdeps-plugin]] [[gradle:dependencies|Gradle Dependencies]] 에서 ''provided'', ''optional'' 지원 플러그인.
* 이를 사용할 경우 IntelliJ IDEA의 기본 Gradle 플러그인으로는 ''provided''를 올바로 인식하지 않는다.
* Gradle 2.x 에서 ''compileOnly'' Scope가 생겼으므로 이 플러그인은 더이상 필요 없을 것으로 보인다.
===== 설정 =====
* 버전 번호 주의할 것. 문서상 버전은 최신이 아니다.
* Gradle 2.x 사용시에는 최소 propDeps **''0.7''** 이상을 사용해야 한다.
===== provided =====
* Maven의 ''provided''
===== optional =====
* Maven의 ''compile true''
===== uploadArchives =====
현재(0.5) Propdeps 플러그인은 ''idea'', ''eclipse'', ''install''에 대해서만 올바르게 ''optional''과 ''provided''를 제공하고 ''uploadArchives''에 대해서는 관련 처리를 하지 않고 있다. 어쨌든 ''provided''는 올바르게 생성되며 ''optional''은 다음 처리를 필요로 한다.
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 지정 : true 생성
pom.whenConfigured { pom ->
pom.dependencies.findAll { dep -> dep.scope == 'optional'}.each { dep ->
dep.scope = 'compile'
dep.optional = true
}
}
}
}
}
* [[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]]