[英]Creating/publishing a jar per Gradle submodule
我正在嘗試使用 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
將不勝感激一些幫助!
所以我找到了解決我自己問題的方法。 在根build.gradle
中,更改為使用:
subprojects {
...
publishing {
publications {
"$project.name"(MavenPublication) {
artifactId project.name
from components.java
}
}
repositories {
maven {
url = 'https://my-repo'
}
}
}
}
project.name
獲取子模塊的名稱,我們告訴 maven-publish 插件使用該字段為每個子模塊創建一個工件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.