我正在嘗試使用 Gradle 創建一個 Spring Boot Starter 專案,目的是讓每個子模塊成為一個不同的庫(比如你如何擁有spring-boot-starter-web、spring-boot-starter-security等)。
但是,我很難讓 Gradle 正確生成 jar,并將它們發布到 maven 存盤庫。理想情況下,我想在 Gradle 中使用 DRY 方法,因為我希望專案隨著啟動專案的增長(盡可能少的代碼更改)自動生成一個 jar 并為每個子模塊發布。
我的專案結構是:
base-repository:
- my-spring-boot-starter-base
- my-spring-boot-starter-module1
我希望這個發布罐子:my-spring-boot-starter-base.jar和my-spring-boot-starter-module1.jar.
基地build.gradle:
import org.springframework.boot.gradle.plugin.SpringBootPlugin
plugins {
id 'org.springframework.boot' version '2.6.7'
id 'java'
id 'java-library'
id 'maven-publish'
}
allprojects {
apply plugin: 'java'
repositories {
mavenCentral()
}
bootJar {
enabled = false
}
}
subprojects {
apply plugin: 'java-library'
dependencies {
implementation platform(SpringBootPlugin.BOM_COORDINATES)
}
jar {
enabled = true
}
publishing {
publications {
withSources(MavenPublication) {
from components.java
}
}
repositories {
maven {
url = 'https://my-repo'
}
}
}
}
wrapper {
gradleVersion = '7.4.2'
}
基地settings.gradle:
rootProject.name = 'my-spring-boot-starter'
include 'my-spring-boot-starter-base'
include 'my-spring-boot-starter-module1'
兩個子模塊都有build.gradle類似于以下內容的檔案:
dependencies {
...
}
當您有一個子模塊而不是多個子模塊時,我擁有的 gradle 配置有效。使用多個,構建失敗并出現以下錯誤:
A problem occurred evaluating root project 'my-spring-boot-starter'.
> Maven publication 'withSources' cannot include multiple components
將不勝感激一些幫助!
uj5u.com熱心網友回復:
所以我找到了解決我自己問題的方法。在 rootbuild.gradle中,更改為使用:
subprojects {
...
publishing {
publications {
"$project.name"(MavenPublication) {
artifactId project.name
from components.java
}
}
repositories {
maven {
url = 'https://my-repo'
}
}
}
}
project.name獲取子模塊的名稱,然后我們告訴 maven-publish 插件使用該欄位為每個子模塊創建一個工件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/480792.html
下一篇:無法從應用引擎連接云sql
