#java #maven #gradle
#java #maven #gradle
Вопрос:
В моем проекте у меня есть собственный jar, доступ к которому должен быть локальным. Я попытался найти различные способы установки jar в локальный репозиторий maven, следуя официальному руководству.
https://docs.gradle.org/current/userguide/publishing_maven.html
Но это не работает.
Я создал файл build.gradle следующим образом,
plugins {
id 'maven-publish'
}
project.afterEvaluate {
publishing {
publications {
maven(MavenPublication) {
groupId = 'com.xxx.yyy.zzz'
artifactId = 'XYZ'
version = 'X.X.X'
from components.java
}
}
}
}
В project settings.gradle.kts jar извлекается с помощью,
plugins {
id("com.xxx.yyy.zzz.XYZ") version "X.X.X"
}
Теперь, в maven я использовал для установки jars в локальный репозиторий, указав имя jar.
Поскольку я новичок в gradle, возможно, мне не хватает какого-то жизненно важного понимания.
После выполнения команды gradle publishToMavenLocal
я получаю сообщение об ошибке,
gradle publishToMavenLocal
FAILURE: Build failed with an exception.
* Where:
Build file '/home/xxx/yyy/zzz/build.gradle' line: 13
* What went wrong:
A problem occurred configuring root project 'zzz'.
> Exception thrown while executing model rule: PublishingPlugin.Rules#publishing(ExtensionContainer)
> Could not get unknown property 'java' for SoftwareComponentInternal set of type org.gradle.api.internal.component.DefaultSoftwareComponentContainer.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 0s
Если я удалю строку from components.java
, сборка станет успешной, но местоположение jar не будет найдено, и когда я выполняю основную сборку проекта, он говорит,
* What went wrong:
Plugin [id: 'com.xxx.yyy.zzz.XYZ', version: 'X.Y.Z'] was not found in any of the following sources:
- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'com.xxx.yyy.zzz.XYZ:X.Y.Z')
Searched in the following repositories:
MavenLocal(file:/home/xxx/.m2/repository)
MavenRepo
Обновить
Исходный файл settings.gradle.kts,
pluginManagement {
repositories {
mavenLocal()
mavenCentral()
}
plugins {
}
}
plugins {
id("com.xxx.yyy.zzz.XYZ") version "X.Y.Z"
}
rootProject.name = "svoc-sherlock"
apply(from = "${rootProject.projectDir}/gradle/buildcache.settings.gradle.kts")
include(
"java-platform",
"datamodel",
"lib-common",
"stream-app-auto-quote-ingestion",
"stream-app-msiclient-ingestion",
"stream-app-msianb-quotes-ingestion"
)
Комментарии:
1. Вы пробовали добавлять
id 'java'
в свой блок плагинов либо ниже, либо вышеid 'maven-publish'
2. @DavidKroukamp это сработало и устранило ошибку. Но в основном проекте, когда я обращаюсь к плагину, он все тот же (ошибка сборки).
Ответ №1:
Попробуйте это в своем build.gradle
:
plugins {
id 'java'
id 'maven-publish'
}
Это просто добавляет плагин java, который также необходим.
Обновить:
В ответ на ваш комментарий: Вам нужно добавить эту строку в свой settings.gradle
:
rootProject.buildFileName = 'build.gradle.kts'
выше include ':app'
.
Комментарии:
1. пожалуйста, ознакомьтесь с обновленным вопросом. Я добавил (основной) файл сборки.
2. Итак, вы вообще пытались добавить мою строку, которую я предложил? Может быть, ниже
rootProject.name
?3. Да. Но никаких изменений.
4. Не проблема. Спасибо за ваше время.