Включите pom.xml в Jar с Gradle - PullRequest
1 голос
/ 01 ноября 2019

Я пытаюсь включить сгенерированный pom.xml в jar, который создаю с помощью gradle.

Пока в моем родительском проекте у меня есть

subprojects {
    apply plugin: 'maven-publish'

    publishing {
        publications {
            maven(MavenPublication) {
                from(components.java)
            }
        }
    }
}

и в подпроекте у меня есть:

tasks.build.dependsOn install

sourceSets {
    main {
        resources {
            srcDirs = [ "src/main/resources", "build/poms" ]
        }
    }
}

Это сгенерирует ./build/poms/pom-default.xml, но не добавит его в JAR.

Создание зависимости на более ранней фазечем build создает циклические зависимости (и я все равно не знаю, является ли это проблемой).

Кроме того, я бы хотел, чтобы pom.xml отображался внутри META-INF с именем pom.xml(не pom-default.xml), так что в любом случае это может быть неправильный подход.

Почему-то я думаю, что это не может быть так сложно, как это выглядит?

1 Ответ

1 голос
/ 03 ноября 2019

Вы должны иметь возможность включить POM в свой JAR, добавив следующее к своему закрытию subprojects:

jar {
    into('META-INF') {
        from generatePomFileForMavenPublication
        rename { it.replace('pom-default.xml', 'pom.xml') }
    }
}

Если у вас уже есть закрытие jar, вы можете добавить его там. Это автоматически создает зависимость задачи от задачи generatePomFileForMavenPublication , поэтому файл POM находится там при создании JAR.
Часть sourceSets из вашего вопроса для этого не потребуется.

(Примечание: совсем не обязательно делать это, потому что процесс публикации Maven в любом случае опубликует POM как отдельный артефакт.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...