Установка Gradle / локальное использование jar плагина

#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. Не проблема. Спасибо за ваше время.