30 Star 254 Fork 62

Ahoo-Wang / Wow

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
build.gradle.kts 7.74 KB
一键复制 编辑 原始数据 按行查看 历史
/*
* Copyright [2021-present] [ahoo wang <ahoowang@qq.com> (https://github.com/Ahoo-Wang)].
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import io.gitlab.arturbosch.detekt.DetektPlugin
import io.gitlab.arturbosch.detekt.extensions.DetektExtension
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.testretry.TestRetryPlugin
import org.jetbrains.dokka.gradle.DokkaPlugin
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
plugins {
alias(libs.plugins.testRetry)
alias(libs.plugins.publishPlugin)
alias(libs.plugins.detekt)
alias(libs.plugins.kotlin)
alias(libs.plugins.dokka)
jacoco
}
val dependenciesProject = project(":wow-dependencies")
val bomProjects = setOf(
project(":wow-bom"),
dependenciesProject,
)
val exampleDomainProject = project(":example-domain")
val exampleLibraries = setOf(
project(":example-api"), exampleDomainProject,
project(":example-transfer-api"),
project(":example-transfer-domain")
)
val exampleProjects =
exampleLibraries + project(":example-server") + project(":example-transfer-server") + project(":wow-compensation-server")
val testProject = project(":wow-test")
val codeCoverageReportProject = project(":code-coverage-report")
val publishProjects = subprojects - exampleProjects - codeCoverageReportProject
val libraryProjects = publishProjects - bomProjects + exampleLibraries
val isInCI = !System.getenv("CI").isNullOrEmpty()
ext.set("libraryProjects", libraryProjects)
allprojects {
repositories {
mavenLocal()
mavenCentral()
}
tasks.withType<Jar> {
manifest {
attributes["Implementation-Title"] = project.name
attributes["Implementation-Version"] = project.version
}
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
}
configure(bomProjects) {
apply<JavaPlatformPlugin>()
configure<JavaPlatformExtension> {
allowDependencies()
}
}
configure(libraryProjects) {
apply<DetektPlugin>()
configure<DetektExtension> {
config.setFrom(files("${rootProject.rootDir}/config/detekt/detekt.yml"))
buildUponDefaultConfig = true
autoCorrect = true
}
apply<DokkaPlugin>()
apply<JacocoPlugin>()
apply<JavaLibraryPlugin>()
configure<JavaPluginExtension> {
withJavadocJar()
withSourcesJar()
}
apply(plugin = "org.jetbrains.kotlin.jvm")
configure<KotlinJvmProjectExtension> {
jvmToolchain(17)
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
compilerOptions {
freeCompilerArgs = listOf("-Xjsr305=strict", "-Xjvm-default=all-compatibility")
}
}
apply<TestRetryPlugin>()
tasks.withType<Test> {
useJUnitPlatform()
testLogging {
exceptionFormat = TestExceptionFormat.FULL
}
// fix logging missing code for JacocoPlugin
jvmArgs = listOf("-Dlogback.configurationFile=${rootProject.rootDir}/config/logback.xml")
retry {
if (isInCI) {
maxRetries = 2
maxFailures = 20
}
failOnPassedAfterRetry = true
}
}
tasks.withType<JavaCompile> {
options.compilerArgs.addAll(listOf("-parameters"))
}
dependencies {
api(platform(dependenciesProject))
detektPlugins(platform(dependenciesProject))
implementation("org.slf4j:slf4j-api")
testImplementation("ch.qos.logback:logback-classic")
testImplementation("org.junit.jupiter:junit-jupiter-api")
testImplementation("org.junit.jupiter:junit-jupiter-params")
testImplementation("org.hamcrest:hamcrest")
testImplementation("io.mockk:mockk") {
exclude(group = "org.slf4j", module = "slf4j-api")
}
testImplementation("io.micrometer:micrometer-core")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting")
}
}
configure(publishProjects) {
val isBom = bomProjects.contains(this)
apply<MavenPublishPlugin>()
apply<SigningPlugin>()
configure<PublishingExtension> {
repositories {
maven {
name = "projectBuildRepo"
url = uri(layout.buildDirectory.dir("repos"))
}
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/Ahoo-Wang/Wow")
credentials {
username = System.getenv("GITHUB_ACTOR")
password = System.getenv("GITHUB_TOKEN")
}
}
maven {
name = "LinYiPackages"
url = uri(project.properties["linyiPackageReleaseUrl"].toString())
credentials {
username = project.properties["linyiPackageUsername"]?.toString()
password = project.properties["linyiPackagePwd"]?.toString()
}
}
}
publications {
val publishName = if (isBom) "mavenBom" else "mavenLibrary"
val publishComponentName = if (isBom) "javaPlatform" else "java"
create<MavenPublication>(publishName) {
from(components[publishComponentName])
pom {
name.set(rootProject.name)
description.set(getPropertyOf("description"))
url.set(getPropertyOf("website"))
issueManagement {
system.set("GitHub")
url.set(getPropertyOf("issues"))
}
scm {
url.set(getPropertyOf("website"))
connection.set(getPropertyOf("vcs"))
}
licenses {
license {
name.set(getPropertyOf("license_name"))
url.set(getPropertyOf("license_url"))
distribution.set("repo")
}
}
developers {
developer {
id.set("ahoo-wang")
name.set("ahoo wang")
organization {
url.set(getPropertyOf("website"))
}
}
}
}
}
}
}
configure<SigningExtension> {
if (isInCI) {
val signingKeyId = System.getenv("SIGNING_KEYID")
val signingKey = System.getenv("SIGNING_SECRETKEY")
val signingPassword = System.getenv("SIGNING_PASSWORD")
useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword)
}
if (isBom) {
sign(extensions.getByType(PublishingExtension::class).publications["mavenBom"])
} else {
sign(extensions.getByType(PublishingExtension::class).publications["mavenLibrary"])
}
}
}
nexusPublishing {
this.repositories {
sonatype {
username.set(System.getenv("MAVEN_USERNAME"))
password.set(System.getenv("MAVEN_PASSWORD"))
}
}
}
fun getPropertyOf(name: String) = project.properties[name]?.toString()
Kotlin
1
https://gitee.com/AhooWang/Wow.git
git@gitee.com:AhooWang/Wow.git
AhooWang
Wow
Wow
main

搜索帮助