2013-04-22 3 views
5

이전의 playframework 1.2.x 버전에서는 project/lib에 모든 jar 파일을 복사하므로 playframework에서이를 소비 할 수 있습니다. 우리는 모든 소스 jars를 복사하는 것을 좋아할 것이므로 runnig가 eclipsify를 재생할 때 모든 제 3 자 소스를 볼 수 있습니다. gradle로 이것을 할 수있는 방법이 있습니까?gradle을 사용하여 모든 소스 jar를 복사하는 방법

그리고 내가 캐시 위치를 다운로드 할 때 gradled eclipse를 실행할 때 다운로드 된 모든 소스 항아리를 의미합니다. 우리는 하나의 프로젝트에서 우리를 위해 eclipsify를 재생하는 gradle eclipse를 가지고 있습니다. 그래서 우리는 100 % 그냥 gradle을 사용할 수 있습니다.

덕분에, 딘

답변

5

이 똑바로 앞으로 예상대로되지 않습니다. 특정 폴더에 자바 프로젝트의 모든 종속성에 대한 다음 코드를 복사 소스 항아리 (런타임 + 컴파일을) :

task copySourceJars(type:Copy){ 
     def deps = configurations.runtime.incoming.dependencies.collect{ dependency -> 
      dependency.artifact { artifact -> 
        artifact.name = dependency.name 
        artifact.type = 'source' 
        artifact.extension = 'jar' 
        artifact.classifier = 'sources' 
       } 
      dependency 
     } 
     from(configurations.detachedConfiguration(deps as Dependency[]).resolvedConfiguration.lenientConfiguration.getFiles(Specs.SATISFIES_ALL)) 
     into('sourceLibs') 
    } 

우리는 우리가 경우 실패 싶지 않아, IS 여기 lenientConfiguration를 사용하는 이유 소스 아티팩트를 해결할 수 없습니다. 좀 더 우아한 방법이있을 수 있지만, 그 부분을 자세히 살펴 보지는 않았습니다.

르네

+0

스크립트에 오류가있는 것처럼 보입니다.'resolvedConfiguration' 철자가'from (..)'문에 두 번 쓰여 있습니다. 또한,이 코드는 직접 종속성에 대해서만 소스를 다운로드, transitive 하나에 대한, 내 대답을 참조하십시오. – eskatos

+0

@eskatos 중복 된'resolvedConfiguration'을 제거했습니다. – sschuberth

4

르네의 대답은 직접 의존성, 모든 transitives 종속성하지 소스 항아리의 소스 항아리를 다운로드합니다, 그것은 도움이되기를 바랍니다.

task copySourceJars(type: Copy) { 
    def sources = configurations.runtime.resolvedConfiguration.resolvedArtifacts.collect { artifact -> 
    project.dependencies.create([ 
     group: artifact.moduleVersion.id.group, 
     name: artifact.moduleVersion.id.name, 
     version: artifact.moduleVersion.id.version, 
     classifier: 'sources' 
    ]) 
    } 
    from configurations.detachedConfiguration(sources as Dependency[]) 
    .resolvedConfiguration.lenientConfiguration.getFiles(Specs.SATISFIES_ALL) 
    into file('some-directory/') 
} 

하나는 다음 classifierjavadoc에 변경하여 JavaDoc을 단지에 대한 매우 동일한 작업을 수행 할 수 있습니다 여기에

트릭을 할 것입니다 작업입니다.

관련 문제