spring boot 2.5.x + gradle 7.2 版本 生成、上传依赖包到maven
build.gradle 主要配置内容
build.gradle
文件内容如下
plugins {
id 'org.springframework.boot' version '2.5.6' // 指定依赖spring boot的版本
id 'java'
id 'maven-publish' //gradle 发布需要用到的插件
}
apply plugin: 'io.spring.dependency-management'
repositories {
maven {
allowInsecureProtocol = true
url MAVEN_REPOSITORY_ADDR
}
}
group = 'com.company.test'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
bootJar.enabled = false //不生成可运行jar包
configurations {
developmentOnly
runtimeClasspath {
extendsFrom developmentOnly
}
}
java {
//withJavadocJar() //生成java-doc
withSourcesJar() //生成源码,上传后方便查看
}
jar {
enabled = true //生成依赖jar包
archiveClassifier = '' //取消原来plain的后缀
}
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
repositories {
maven {
credentials {
username MAVEN_REPOSITORY_USER // maven 仓库用户
password MAVEN_REPOSITORY_PWD // maven 仓库密码
}
url MAVEN_REPOSITORY_TEST
allowInsecureProtocol true // 允许访问非https仓库
}
}
}
dependencyManagement {
resolutionStrategy {
cacheChangingModulesFor 0, 'seconds'
}
}
dependencies {
... // 项目依赖
}
禁用gradle 6.0.1 开始 maven-publish 的sha256和sha512校验
从gradle 6.0.1 版本开始,使用maven-publish插件上传依赖包,除了上传sha1签名,还会上传sha256和sha512签名,如果目前使用的maven仓库不支持sha256和sha512校验,上传时将会出现告警:
> Task :publishMavenJavaPublicationToMavenRepository
Cannot upload checksum for module-maven-metadata.xml because the remote repository doesn't support SHA-256. This will not fail the build.
Cannot upload checksum for module-maven-metadata.xml because the remote repository doesn't support SHA-512. This will not fail the build.
不会影响上传,但是可以通过在gradle.properties
里面设置systemProp.org.gradle.internal.publish.checksums.insecure=true
来取消上传和校验sha256和sha512
生成的依赖jar包后带有plain后缀,其他项目依赖不成功
需要在gradle.build里面添加以下配置,就可以去除依赖jar包的plain后缀
jar {
enabled = true
archiveClassifier = '' //use empty string
}
参考资料
gradle 6.0.1 release-notes
Spring Boot 2.5.0 generates plain.jar file. Can I remove it?
https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar:archiveClassifier