2016-07-15 5 views
0

Так что, если я построю банку в Maven, скажем, например, jackson-core-2.5.1.jar, я нахожу следующий артефакт:Как я могу получить град, чтобы заполнить банки метаданными зависимостей?

META-INF/maven/ 
META-INF/maven/com.fasterxml.jackson.core/ 
META-INF/maven/com.fasterxml.jackson.core/jackson-core/ 
META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties 
META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml 

Gradle, однако, как представляется, не создают эти данные. Проблема в том, что у нас есть несколько компонентов нашей сборки, включая родительский проект, которые не размещены в одном месте SCM. Для нашей большой и сложной сборки, как бы Gradle знал, что локально построенный артефакт в одном месте SCM зависит от локально созданного артефакта в другом, если метаданных нет? Что такое способ Gradle управлять этой ситуацией?

ответ

1

Репозитории содержат отдельную копию pom.xml. Обычно он живет рядом с файлом JAR в физической структуре на диске. Это относится к двоичным репозиториям, таким как Nexus или Artifatory, а также к локальному хранилищу Maven (под $HOME/.m2/repo).

Если по какой-то причине вы хотите скопировать поведение Maven, вы можете сказать, что Gradle создает эти файлы. Мы используем эту настройку в закрытии subprojects, который настраивает нашу многопроектную сборку Gradle.

jar { 
    // until we have better solution 
    // https://discuss.gradle.org/t/jar-task-does-not-see-dependency-when-using-maven-publish/11091 
    if (project.tasks.findByName('generatePomFileForMavenJavaPublication')) { 
     dependsOn 'generatePomFileForMavenJavaPublication' 
    } else { 
     project.tasks.whenTaskAdded { addedTask -> 
      if (addedTask.name == 'generatePomFileForMavenJavaPublication') { 
       project.tasks.jar.dependsOn 'generatePomFileForMavenJavaPublication' 
      } 
     } 
    } 
    into("META-INF/maven/$project.group/$project.archivesBaseName") { 
     /* 
     from generatePomFileForMavenJavaPublication 
     */ 
     from new File(project.buildDir, 'publications/mavenJava') 
     rename ".*", "pom.xml" 

    } 
} 

Было бы проще, если бы не была проблема с generatePomFileForMavenJavaPublication создаваемой задачи лениво иногда. И вам нужно проверить, как создать файл свойств. Я думаю, вы можете сбросить свойства из работающего процесса Gradle.

+0

Не работает на своем собственном. Что мне не хватает? – user447607

+0

OIC. Благодарю. Я почти получил эту работу. :-) – user447607

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