====== 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]]