У меня есть проект, который строится с использованием Gradle и плагина ivy-publish. Помимо создания JAR, build.gradle также выполняет задачу выполнения, которая выполняет XmlFileGenerator.main(), которая генерирует 5 XML-файлов (назовите их A, B, C, D и E). Я хочу опубликовать каждый из этих XML-файлов в нашем репозитории Ivy; каждый из них должен иметь одну и ту же группу и версию, но другой модуль и другое имя файла, и каждый должен иметь свой собственный ivy.xml, который отображает только сам.Gradle публикует несколько независимых артефактов
Я могу установить имя файла опубликованного файла, но имя модуля остается таким же, как имя моего проекта, и в результате все мои XML-файлы публикуются под тем же именем модуля, а не под независимыми из них.
Так, например, я хочу, чтобы A.xml был опубликован в {myLocalIvyRootDir}\my-group\A\{version}\xmls\A-{version}.xml
, и я хочу, чтобы B.xml был опубликован в {myLocalIvyRootDir}\my-group\B\{version}\xmls\B-{version}.xml
. Но вместо этого A публикуется в {myLocalIvyRootDir}\my-group\my-project\{version}\xmls\A-{version}.xml
, а B публикуется рядом с ним по адресу {myLocalIvyRootDir}\my-group\my-project\{version}\xmls\B-{version}.xml
.
Вот соответствующее подмножество build.gradle (показывать только А, но не BE):
apply plugin: 'ivy-publish'
group = 'my-group'
publishing {
publications {
ivy(IvyPublication) {
artifact jar
}
aXml(IvyPublication) {
artifact('target/A.xml') {
name = 'A'
extension = 'xml'
type = 'xml'
}
}
}
}
mainClassName = 'my-group.my-project.XmlFileGenerator'
Я попытался определением свойства модуля на публикации с этим кодом:
aXml(IvyPublication) {
module 'A'
artifact('target/A.xml') {
name = 'A'
extension = 'xml'
type = 'xml'
}
}
Но я получаю следующее сообщение об ошибке:
> org.gradle.api.internal.MissingMethodException: Could not find method module() for arguments [A] on org.gradle.api.p[email protected]32384c50.
И я никогда попытался изменить rootProject.name динамически с кодом, как:
publishing {
publications {
ivy(IvyPublication) {
artifact jar
}
project.metaClass.getName {"A"}
aXml(IvyPublication) {
artifact('target/A.xml') {
name = 'A'
extension = 'xml'
type = 'xml'
}
}
}
}
Это не производится без ошибок, но никаких изменений в поведении.
Я чувствую, что я, вероятно, просто пропустил что-то маленькое, но не знаю, что это такое. Может кто-то указать мне верное направление?