2013-10-15 2 views
5

Я хочу написать задачу построения градиента, чтобы выполнить некоторое копирование репозитория артефакта и reorg. Я получил это далеко:Как я могу получить как файл артефакта, так и метаданные артефакта из зависимостей градиентов?

apply plugin: 'maven' 
apply plugin: 'maven-publish' 

repositories { 
    ... 
} 

configurations { 
    ... 
} 

dependencies { 
    ... 
} 

task doit << { 
    configurations.each { configuration -> 
    println configuration 
    configuration.files.each { file -> 
     println " f=${file.path}" 
    } 
    configuration.dependencies.each { dependency -> 
     println " g=${dependency.group}" 
     println " i=${dependency.name}" 
     println " v=${dependency.version}" 
     dependency.artifacts.each { artifact -> 
     println " x=${artifact.classifier}" 
     println " n=${artifact.name}" 
     println " u=${artifact.url}" 
     } 
    } 
    } 
} 

То, что я не могу получить это ссылка на загруженный файл в пределах dependency.artifacts.each() петли.

Лучшее, что я могу сделать, это заполнить массив, перейдя через файлы configuration.files, а затем надеюсь, что мой второй набор циклов над метаданными артефакта будет идти в том же порядке, что и файлы. Мне явно не хватает чего-то

Возможно, есть альтернативный способ? Я действительно хочу создать набор задач, по одному на артефакт, который позволит мне опубликовать новый артефакт с измененными элементами метаданных (например, идентификатор группы, идентификатор артефакта и версия должны измениться).

ответ

4

Вы хотите итерации по разрешенным зависимостями/артефактами, а не запрошенными. Что-то вроде:

configuration.resolvedConfiguration.resolvedArtifacts.each { artifact -> 
    println artifact.moduleVersion.id.group 
    println artifact.moduleVersion.id.name 
    println artifact.moduleVersion.id.version 
    println artifact.file 
} 
+0

Кажется, что не работает _quite_, но я думаю, что это указывает на правильное направление ... Я нахожу здесь отладчик и исследую больше. –

+0

Я забыл указать артефакт (исправлено). Хороший способ узнать об API - проверить ссылку [Gradle Build Language Reference] (http://gradle.org/docs/current/dsl/index.html), которая далее связывается с Javadoc/Groovydoc. –

+0

Хорошо, спасибо! Это работает. Ссылка хорошая, если вам уже комфортно со всей структурой. Я все еще пытаюсь понять это. –

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