简体   繁体   中英

Gradle to add module dependency in Micronaut project

I have three module as shown below

在此处输入图像描述

The fete-bird-apigateway depend on common and fete-bird-product depend on both fete-bird-apigateway and common

In the fete-bird-product settings.gradle I have included the code below

    rootProject.name = "fete-bird-product"
include 'fete-bird-apigateway' , 'common'

and in the build.gradle of project

dependencies {
    implementation project(':common')
}

Error

Caused by: org.gradle.internal.component.NoMatchingConfigurationSelectionException: No matching configuration of project:common was found.

I don't want to create a multi-module build project describe here https://docs.gradle.org/current/userguide/multi_project_builds.html . Each project should build individually and dependent modules should load while building.

How can I achieve this?

Well I found that I had the wrong concept for different module projects.

Assuming all modules are part of the same multi-module build then in fete-bird-apigateway.gradle and service\build.gradle you add:

plugins {
    id 'java'
    id 'maven-publish'
}

dependencies {
  implementation project(':common')
}

However if common, fete-bird-apigateway and service are separate projects and don't share the same root build.gradle you have to publish the common module into a shared repository and use it like any regular dependency. Easiest to do with Maven Local repository.

To publish to the local maven

In fete-bird-apigateway.gradle

publishing {
    publications {
        maven(MavenPublication) {
            groupId = 'org.gradle.sample'
            artifactId = 'library'
            version = '1.1'

            from components.java
        }
    }
}

Reference - https://docs.gradle.org/current/userguide/declaring_repositories.html https://docs.gradle.org/current/userguide/publishing_maven.html#gsc.tab=0

In the dependent project add the dependency as regular

repositories {
    mavenLocal()
}

implementation("fete.bird:fete-bird-apigateway:0.1")

We need to run the task or gradle command for publish. I am using Intellj so did with below task

在此处输入图像描述

We can run the gradle command gradle publishToMavenLocal

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM