Gradle: как загрузить пользовательский JAR-файл в репозиторий Maven

Я создаю JAR-файл без использования задачи Gradle Jar (мне нужно использовать задачу Ant для этого внутри моей задачи). Как мне настроить uploadArchives, чтобы иметь возможность устанавливать JAR в указанном репозитории.

Я попытался переопределить артефакт по умолчанию с

uploadArchives {
    repositories {
        mavenDeployer {
            // some Maven configuration
        }
    }
}

artifacts {
    archives file: file('bin/result.jar')
}

но я получаю сообщение об ошибке, что не может быть 2 артефакта с одинаковым типом и классификатором, что означает, что эта конфигурация добавляет, а не заменяет конфигурацию.

1 ответ

Решение

Вы правы, artifacts Закрытие может только добавить артефакты к данной конфигурации (см. API ArtifactHandler).

У вас есть два варианта:

1) Добавьте фильтр артефактов, как описано здесь (см. Раздел 45.6.4.1. "Несколько артефактов на проект"). Если вы используете это, попробуйте объявить archives конфигурация как:

artifacts {
  archives file: file('bin/result.jar'), name: 'result', type: 'jar'
}

Таким образом, вы что-то вроде этого в вашем фильтре артефактов:

addFilter('result') {artifact, file ->
  artifact.name == 'result'
}

2) Загрузите его как отдельный модуль maven. Если result.jar это единственная банка, которую вы загружаете, это может быть хорошим решением.

configurations {
  resultArchives
}

uploadResultArchives {
  repositories {
    mavenDeployer {
      repository(url: "same/url/here")
    }
  }
}

artifacts{
  resultArchives file: file('bin/result.jar')
}

Надеюсь это поможет.

Другие вопросы по тегам