这里是示例项目信息,使用spring boot框架。
组号:com.test
工件 ID:样本
版本:1.0.0
我想将 jar 和 bootJar 发布到我的 maven 存储库。
罐子:sample-1.0.0.jar
引导罐:sample_starter-1.0.0.jar
sample_starter-1.0.0.jar 供内部使用,用于创建在我的 linux 服务器上运行的 docker 容器,而 sample-1.0.0.jar 将作为我的断言之一存档。
但是我得到了 sample_starter-1.0.0.jar 和 sample-1.0.0-plain.jar。没有plain分类器,有没有办法制作jar版本?我尝试通过设置 classifier='' 自定义 jar 任务,但它根本不起作用。
这是我的 build.gradle 设置。
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.5'
id 'io.spring.dependency-management' version '1.1.0'
id 'maven-publish'
}
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-test'
}
group='com.test'
version='1.0.0'
publishing {
publications {
plainJar(MavenPublication) {
artifact jar
}
starterJar(MavenPublication) {
artifact bootJar {
artifactId = "${project.name}_starter"
}
}
}
repositories {
maven {
name = 'myRepo'
url = layout.buildDirectory.dir("myRepo")
}
}
}
这在 Spring Boot Gradle 插件文档中有记录。
plain
分类器的原因是因为常规/普通 JAR 和 Spring boot fat/uber JAR 具有相同的名称。因此,这将导致输出每个工件的任务相互覆盖或导致一般错误。根据文档删除plain
分类器:
tasks.named<BootJar>("bootJar") {
archiveClassifier.set("boot") // or whatever classifier you want
}
tasks.named<Jar>("jar") {
archiveClassifier.set("")
}