2013-04-22 1 views
5

У нас есть старая версия 1.2.x для playframework, где мы копируем все банки в проект/lib, поэтому playframework может их использовать. Мы хотели бы ЛЮБИТЬ, чтобы скопировать все исходные банки, так что, когда runnig play eclipsify, мы можем просмотреть все сторонние источники. Есть ли способ сделать это с помощью градиента?Как скопировать все исходные банки с помощью градировки

и я имею в виду все исходные банки, которые были загружены, когда я запустил затмение градиента, когда увидел, что они загружают места кеширования. У нас есть метод эквалайзера eclipse для граффити для одного проекта, поэтому мы можем на 100% использовать град.

спасибо, Дин

ответ

5

это не так прямо вперед, как и следовало ожидать. Следующие копии сниппет исходные банки для всех зависимостей (во время выполнения + компиляции) проекта Java в определенную папку:

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') 
    } 

Причина мы используем lenientConfiguration здесь есть, что мы не хотим потерпеть неудачу, если Артефакт источника не может быть разрешен. Там может быть более элегантный способ, но я не смотрел глубже в это.

надеюсь, что это помогает,

Рене

+0

Похоже, что в скрипте есть ошибка, 'resolConfiguration' дважды записывается в' '(..)'. Более того, этот код загружает источники только для прямых зависимостей, а не для транзитивных, см. Мой ответ. – eskatos

+0

@eskatos Я удалил дублируемую 'resolvedConfiguration'. – sschuberth

4

Rene ответ будет скачать источники баночки прямых зависимостей, а не источники баночек всех 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/') 
} 

Затем можно сделать тот же для JavaDocs банки путем изменения classifier к javadoc.

Смежные вопросы