diff --git a/build.gradle.kts b/build.gradle.kts index b66cd0e..4306871 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,31 +1,39 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - kotlin("jvm") version "1.9.20-RC2" - id("ts-gradle") + val kotlinVersion = "1.9.20-RC2" + kotlin("jvm") version kotlinVersion + kotlin("plugin.allopen") version kotlinVersion apply false + + id("ts-gradle-env") apply false + id("ts-gradle-install") apply false + id("ts-gradle-no-test") apply false + id("ts-gradle-publish") apply false + id("ts-gradle-repos") apply false } allprojects { + apply(plugin = "org.jetbrains.kotlin.jvm") apply(plugin = "maven-publish") + apply(plugin = "ts-gradle-env") + apply(plugin = "ts-gradle-install") + apply(plugin = "ts-gradle-no-test") + apply(plugin = "ts-gradle-publish") + apply(plugin = "ts-gradle-repos") group = "cn.tursom" version = "1.1-SNAPSHOT" - useTursomRepositories() - tasks.withType().configureEach { - //kotlinOptions.jvmTarget = "21" + kotlinOptions.jvmTarget = "21" kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn" - //kotlinOptions.useIR = true } - if (!isTestRunning) { - tasks.withType { - enabled = false + java { + toolchain { + languageVersion.set(JavaLanguageVersion.of(21)) } } - - //autoConfigPublish() } dependencies { diff --git a/local.example.yml b/local.example.yml new file mode 100644 index 0000000..08c63cf --- /dev/null +++ b/local.example.yml @@ -0,0 +1,3 @@ +tursom: + artifactoryUser: XXXX + artifactoryPassword: XXXX \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 4fa0bba..2f9bdf3 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -39,6 +39,8 @@ include("ts-database:ts-redis") dependencyResolutionManagement { versionCatalogs { create("libs") { + version("kotlin-version", "1.9.20-RC2") + val kotlinCoroutineVersion = "1.7.3" version("kotlin-coroutines", kotlinCoroutineVersion) library( diff --git a/ts-core/build.gradle.kts b/ts-core/build.gradle.kts index 3130f11..de80cbd 100644 --- a/ts-core/build.gradle.kts +++ b/ts-core/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(kotlin("stdlib-jdk8")) api(kotlin("reflect")) diff --git a/ts-core/ts-async-http/build.gradle.kts b/ts-core/ts-async-http/build.gradle.kts index 7d5ec8b..72fef2a 100644 --- a/ts-core/ts-async-http/build.gradle.kts +++ b/ts-core/ts-async-http/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(project(":")) api(project(":ts-core")) diff --git a/ts-core/ts-buffer/build.gradle.kts b/ts-core/ts-buffer/build.gradle.kts index f4da7e7..2a3f9d7 100644 --- a/ts-core/ts-buffer/build.gradle.kts +++ b/ts-core/ts-buffer/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":ts-core:ts-log")) implementation(project(":ts-core")) diff --git a/ts-core/ts-clone/build.gradle.kts b/ts-core/ts-clone/build.gradle.kts index 0b20ea9..4af3695 100644 --- a/ts-core/ts-clone/build.gradle.kts +++ b/ts-core/ts-clone/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":")) implementation(project(":ts-core")) diff --git a/ts-core/ts-coroutine/build.gradle.kts b/ts-core/ts-coroutine/build.gradle.kts index 65936b3..24ef408 100644 --- a/ts-core/ts-coroutine/build.gradle.kts +++ b/ts-core/ts-coroutine/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":ts-core")) api(group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version = coroutineVersion) diff --git a/ts-core/ts-coroutine/ts-coroutine-lock/build.gradle.kts b/ts-core/ts-coroutine/ts-coroutine-lock/build.gradle.kts index 65936b3..24ef408 100644 --- a/ts-core/ts-coroutine/ts-coroutine-lock/build.gradle.kts +++ b/ts-core/ts-coroutine/ts-coroutine-lock/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":ts-core")) api(group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version = coroutineVersion) diff --git a/ts-core/ts-curry/build.gradle.kts b/ts-core/ts-curry/build.gradle.kts index dae92e9..1d3a05d 100644 --- a/ts-core/ts-curry/build.gradle.kts +++ b/ts-core/ts-curry/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":")) implementation(project(":ts-core")) diff --git a/ts-core/ts-datastruct/build.gradle.kts b/ts-core/ts-datastruct/build.gradle.kts index ec839d6..c74b081 100644 --- a/ts-core/ts-datastruct/build.gradle.kts +++ b/ts-core/ts-datastruct/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":")) implementation(project(":ts-core")) diff --git a/ts-core/ts-delegation/build.gradle.kts b/ts-core/ts-delegation/build.gradle.kts index 054cab8..14ef12c 100644 --- a/ts-core/ts-delegation/build.gradle.kts +++ b/ts-core/ts-delegation/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(project(":ts-core")) compileOnly(group = "io.netty", name = "netty-all", version = nettyVersion) diff --git a/ts-core/ts-delegation/ts-observer/build.gradle.kts b/ts-core/ts-delegation/ts-observer/build.gradle.kts index 9a2890e..d713ab3 100644 --- a/ts-core/ts-delegation/ts-observer/build.gradle.kts +++ b/ts-core/ts-delegation/ts-observer/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":ts-core")) api(project(":ts-core:ts-delegation")) diff --git a/ts-core/ts-encrypt/build.gradle.kts b/ts-core/ts-encrypt/build.gradle.kts index c0b5020..85ceb33 100644 --- a/ts-core/ts-encrypt/build.gradle.kts +++ b/ts-core/ts-encrypt/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":ts-core")) implementation(project(":ts-core:ts-buffer")) diff --git a/ts-core/ts-hash/build.gradle.kts b/ts-core/ts-hash/build.gradle.kts index f368cd8..c2d79ad 100644 --- a/ts-core/ts-hash/build.gradle.kts +++ b/ts-core/ts-hash/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":ts-core")) implementation(project(":ts-core:ts-buffer")) diff --git a/ts-core/ts-json/build.gradle.kts b/ts-core/ts-json/build.gradle.kts index e53b616..e4f02fe 100644 --- a/ts-core/ts-json/build.gradle.kts +++ b/ts-core/ts-json/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":")) compileOnly(group = "com.google.code.gson", name = "gson", version = "2.8.9") diff --git a/ts-core/ts-log/build.gradle.kts b/ts-core/ts-log/build.gradle.kts index 2559fa1..34a10e5 100644 --- a/ts-core/ts-log/build.gradle.kts +++ b/ts-core/ts-log/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":ts-core")) implementation(project(":ts-core:ts-delegation")) diff --git a/ts-core/ts-mail/build.gradle.kts b/ts-core/ts-mail/build.gradle.kts index 61ef010..656605f 100644 --- a/ts-core/ts-mail/build.gradle.kts +++ b/ts-core/ts-mail/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":")) api(group = "com.sun.mail", name = "javax.mail", version = "1.6.2") diff --git a/ts-core/ts-pool/build.gradle.kts b/ts-core/ts-pool/build.gradle.kts index 88be01d..268933c 100644 --- a/ts-core/ts-pool/build.gradle.kts +++ b/ts-core/ts-pool/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(project(":")) api(project(":ts-core")) diff --git a/ts-core/ts-proxy-jdk/build.gradle.kts b/ts-core/ts-proxy-jdk/build.gradle.kts index 2b73aba..16546bc 100644 --- a/ts-core/ts-proxy-jdk/build.gradle.kts +++ b/ts-core/ts-proxy-jdk/build.gradle.kts @@ -1,9 +1,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - kotlin("jvm") - id("ts-gradle") - kotlin("plugin.allopen") version "1.5.21" + kotlin("plugin.allopen") } dependencies { diff --git a/ts-core/ts-proxy/build.gradle.kts b/ts-core/ts-proxy/build.gradle.kts index cd44147..5afc5af 100644 --- a/ts-core/ts-proxy/build.gradle.kts +++ b/ts-core/ts-proxy/build.gradle.kts @@ -1,9 +1,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - kotlin("jvm") - id("ts-gradle") - kotlin("plugin.allopen") version "1.5.21" + kotlin("plugin.allopen") } dependencies { diff --git a/ts-core/ts-reflect/build.gradle.kts b/ts-core/ts-reflect/build.gradle.kts index 8a365b6..26e11b6 100644 --- a/ts-core/ts-reflect/build.gradle.kts +++ b/ts-core/ts-reflect/build.gradle.kts @@ -1,9 +1,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - kotlin("jvm") - id("ts-gradle") - kotlin("plugin.allopen") version "1.5.21" + kotlin("plugin.allopen") } dependencies { diff --git a/ts-core/ts-reflectasm/build.gradle.kts b/ts-core/ts-reflectasm/build.gradle.kts index 40fd434..a5bfcd6 100644 --- a/ts-core/ts-reflectasm/build.gradle.kts +++ b/ts-core/ts-reflectasm/build.gradle.kts @@ -1,9 +1,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - kotlin("jvm") - id("ts-gradle") - kotlin("plugin.allopen") version "1.5.21" + kotlin("plugin.allopen") } dependencies { diff --git a/ts-core/ts-ws-client/build.gradle.kts b/ts-core/ts-ws-client/build.gradle.kts index 5bc92eb..768ccf7 100644 --- a/ts-core/ts-ws-client/build.gradle.kts +++ b/ts-core/ts-ws-client/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(project(":ts-core")) api(project(":ts-core:ts-buffer")) diff --git a/ts-core/ts-xml/build.gradle.kts b/ts-core/ts-xml/build.gradle.kts index 4981a0e..237528b 100644 --- a/ts-core/ts-xml/build.gradle.kts +++ b/ts-core/ts-xml/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(project(":")) // 解析XML https://mvnrepository.com/artifact/org.dom4j/dom4j diff --git a/ts-core/ts-yaml/build.gradle.kts b/ts-core/ts-yaml/build.gradle.kts index 80fb74f..03cae69 100644 --- a/ts-core/ts-yaml/build.gradle.kts +++ b/ts-core/ts-yaml/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":ts-core")) // 解析YAML diff --git a/ts-database/build.gradle.kts b/ts-database/build.gradle.kts index 80acb6c..296bb71 100644 --- a/ts-database/build.gradle.kts +++ b/ts-database/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(kotlin("stdlib-jdk8")) api(kotlin("reflect")) diff --git a/ts-database/ts-ktorm/build.gradle.kts b/ts-database/ts-ktorm/build.gradle.kts index 7d71e6e..9368a58 100644 --- a/ts-database/ts-ktorm/build.gradle.kts +++ b/ts-database/ts-ktorm/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(kotlin("stdlib-jdk8")) api(kotlin("reflect")) diff --git a/ts-database/ts-mongodb/build.gradle.kts b/ts-database/ts-mongodb/build.gradle.kts index 0f8ad35..a323975 100644 --- a/ts-database/ts-mongodb/build.gradle.kts +++ b/ts-database/ts-mongodb/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(project(":")) implementation(project(":ts-core")) diff --git a/ts-database/ts-mongodb/ts-mongodb-spring/build.gradle.kts b/ts-database/ts-mongodb/ts-mongodb-spring/build.gradle.kts index 3df3f93..4770488 100644 --- a/ts-database/ts-mongodb/ts-mongodb-spring/build.gradle.kts +++ b/ts-database/ts-mongodb/ts-mongodb-spring/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(project(":")) implementation(project(":ts-core")) diff --git a/ts-database/ts-mybatisplus/build.gradle.kts b/ts-database/ts-mybatisplus/build.gradle.kts index 74e141a..d298af5 100644 --- a/ts-database/ts-mybatisplus/build.gradle.kts +++ b/ts-database/ts-mybatisplus/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(kotlin("stdlib-jdk8")) api(kotlin("reflect")) diff --git a/ts-database/ts-redis/build.gradle.kts b/ts-database/ts-redis/build.gradle.kts index 29fafb6..03733e9 100644 --- a/ts-database/ts-redis/build.gradle.kts +++ b/ts-database/ts-redis/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(project(":")) implementation(project(":ts-core")) diff --git a/ts-gradle/build.gradle.kts b/ts-gradle/build.gradle.kts index 92ccdbf..b0bfe18 100644 --- a/ts-gradle/build.gradle.kts +++ b/ts-gradle/build.gradle.kts @@ -1,17 +1,17 @@ -//import java.text.SimpleDateFormat +//imextracted.text.SimpleDateFormat +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import java.util.* plugins { - kotlin("jvm") version "1.9.10" + kotlin("jvm") version "1.9.10" apply false `java-gradle-plugin` - `maven-publish` } try { val properties = Properties() properties.load(file("local.properties").inputStream()) properties.forEach { (k, v) -> - ext.set(k.toString(), v) + project.ext.set(k.toString(), v) try { setProperty(k.toString(), v) } catch (_: Exception) { @@ -20,104 +20,117 @@ try { } catch (_: Exception) { } -group = "cn.tursom" -//version = SimpleDateFormat("yy.MM.dd-HH.mm").format(Date()) -version = "1.1-SNAPSHOT" +allprojects { + group = "cn.tursom" + version = "1.1-SNAPSHOT" -repositories { - maven { - url = uri("https://jmp.mvn.tursom.cn:20080/repository/maven-public/") + apply(plugin = "maven-publish") + apply(plugin = "org.jetbrains.kotlin.jvm") + apply(plugin = "java-gradle-plugin") + + repositories { + maven { + url = uri("https://jmp.mvn.tursom.cn:20080/repository/maven-public/") + } } -} -dependencies { - implementation(group = "org.yaml", name = "snakeyaml", version = "2.0") - implementation(fileTree(mapOf("dir" to "libs", "include" to arrayOf("*.jar")))) -} + extensions.configure(PublishingExtension::class) { + repositories { + publishToTursom(this, this@allprojects) + publishToGithub(this, this@allprojects) + registerPublishRepos(this, this@allprojects) + } + publications { + create("plugin") { + groupId = project.group.toString() + artifactId = project.name + version = project.version.toString() -gradlePlugin { - plugins { - create("ts-gradle") { - // 在 app 模块需要通过 id 引用这个插件 - id = "ts-gradle" - // 实现这个插件的类的路径 - implementationClass = "cn.tursom.gradle.TursomGradlePlugin" + from(components["java"]) + try { + artifact(tasks["kotlinSourcesJar"]) + } catch (e: Exception) { + } + } + } + } + + tasks.withType().configureEach { + kotlinOptions.jvmTarget = "17" + kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn" + //kotlinOptions.useIR = true + } + + java { + toolchain { + languageVersion.set(JavaLanguageVersion.of(17)) } } } -publishing { - repositories { +fun publishToTursom(repositoryHandler: RepositoryHandler, project: Project) { + try { + repositoryHandler.maven { + name = "tursom" + val releasesRepoUrl = project.uri("https://jmp.mvn.tursom.cn:20080/repository/maven-releases/") + val snapshotRepoUrl = project.uri("https://jmp.mvn.tursom.cn:20080/repository/maven-snapshots/") + url = if (project.project.version.toString().endsWith("SNAPSHOT")) snapshotRepoUrl else releasesRepoUrl + println(url) + credentials { + val artifactoryUser: String = project.rootProject.ext["tursom.artifactoryUser"] as String + val artifactoryPassword: String = project.rootProject.ext["tursom.artifactoryPassword"] as String + username = artifactoryUser + password = artifactoryPassword + } + } + } catch (e: Exception) { + println("cannot push to repository tursom: ${e.javaClass}: ${e.message}") + } +} + +fun publishToGithub(repositoryHandler: RepositoryHandler, project: Project) { + try { + repositoryHandler.maven { + name = "GitHubPackages" + val githubUser: String = project.rootProject.ext["github.artifactoryUser"] as String + val githubToken: String = project.rootProject.ext["github.artifactoryPassword"] as String + url = project.uri("https://maven.pkg.github.com/$githubUser/TursomServer") + credentials { + username = githubUser + password = githubToken + } + } + } catch (e: Exception) { + println("cannot push to repository github") + } +} + +fun registerPublishRepos(repositoryHandler: RepositoryHandler, project: Project) { + val repositoriesRegex = "repositories\\.[a-zA-z]*".toRegex() + project.rootProject.properties.keys.asSequence().filter { + it matches repositoriesRegex + }.forEach { + val repositoryName = project.rootProject.ext.properties["$it.name"]?.toString() ?: it.substringAfterLast('.') try { - maven { - name = "tursom" - val releasesRepoUrl = uri("https://jmp.mvn.tursom.cn:20080/repository/maven-releases/") - val snapshotRepoUrl = uri("https://jmp.mvn.tursom.cn:20080/repository/maven-snapshots/") - url = if (project.version.toString().endsWith("SNAPSHOT")) snapshotRepoUrl else releasesRepoUrl + val artifactoryUser = project.rootProject.ext.properties["$it.artifactoryUser"].toString() + val artifactoryPassword = project.rootProject.ext.properties["$it.artifactoryPassword"].toString() + repositoryHandler.maven { + name = repositoryName + val releasesRepoUrl = project.rootProject.ext.properties["$it.release"]?.let { project.uri(it.toString()) } + val snapshotRepoUrl = project.rootProject.ext.properties["$it.snapshot"]?.let { project.uri(it.toString()) } + val repoUrl = project.rootProject.ext.properties["$it.url"]?.let { project.uri(it.toString()) } + url = if (project.project.version.toString().endsWith("SNAPSHOT") + && snapshotRepoUrl != null + ) { + snapshotRepoUrl + } else releasesRepoUrl ?: repoUrl!! credentials { - val artifactoryUser: String = rootProject.ext["tursom.artifactoryUser"] as String - val artifactoryPassword: String = rootProject.ext["tursom.artifactoryPassword"] as String username = artifactoryUser password = artifactoryPassword } } } catch (e: Exception) { - println("cannot push to repository tursom: ${e.javaClass}: ${e.message}") - } - try { - maven { - name = "GitHubPackages" - val githubUser: String = rootProject.ext["github.artifactoryUser"] as String - val githubToken: String = rootProject.ext["github.artifactoryPassword"] as String - url = uri("https://maven.pkg.github.com/$githubUser/TursomServer") - credentials { - username = githubUser - password = githubToken - } - } - } catch (e: Exception) { - println("cannot push to repository github") - } - - val repositoriesRegex = "repositories\\.[a-zA-z]*".toRegex() - rootProject.properties.keys.asSequence().filter { - it matches repositoriesRegex - }.forEach { - val repositoryName = rootProject.ext.properties["$it.name"]?.toString() ?: it.substringAfterLast('.') - try { - val artifactoryUser = rootProject.ext.properties["$it.artifactoryUser"].toString() - val artifactoryPassword = rootProject.ext.properties["$it.artifactoryPassword"].toString() - maven { - name = repositoryName - val releasesRepoUrl = rootProject.ext.properties["$it.release"]?.let { uri(it.toString()) } - val snapshotRepoUrl = rootProject.ext.properties["$it.snapshot"]?.let { uri(it.toString()) } - val repoUrl = rootProject.ext.properties["$it.url"]?.let { uri(it.toString()) } - url = if (project.version.toString().endsWith("SNAPSHOT") - && snapshotRepoUrl != null - ) { - snapshotRepoUrl - } else releasesRepoUrl ?: repoUrl!! - credentials { - username = artifactoryUser - password = artifactoryPassword - } - } - } catch (e: Exception) { - println("cannot push to repository $repositoryName") - } + println("cannot push to repository $repositoryName") } } - publications { - create("plugin") { - groupId = project.group.toString() - artifactId = project.name - version = project.version.toString() - - from(components["java"]) - try { - artifact(tasks["kotlinSourcesJar"]) - } catch (e: Exception) { - } - } - } -} +} \ No newline at end of file diff --git a/ts-gradle/local.example.properties b/ts-gradle/local.example.properties new file mode 100644 index 0000000..ab2ade2 --- /dev/null +++ b/ts-gradle/local.example.properties @@ -0,0 +1,2 @@ +tursom.artifactoryUser: XXXX +tursom.artifactoryPassword: XXXX \ No newline at end of file diff --git a/ts-gradle/settings.gradle.kts b/ts-gradle/settings.gradle.kts index a22a698..1d4265b 100644 --- a/ts-gradle/settings.gradle.kts +++ b/ts-gradle/settings.gradle.kts @@ -1,3 +1,9 @@ +include("ts-gradle-env") +include("ts-gradle-no-test") +include("ts-gradle-install") +include("ts-gradle-publish") +include("ts-gradle-repos") + pluginManagement { repositories { maven { diff --git a/ts-gradle/src/main/kotlin/Internal.kt b/ts-gradle/src/main/kotlin/Internal.kt deleted file mode 100644 index 13e5948..0000000 --- a/ts-gradle/src/main/kotlin/Internal.kt +++ /dev/null @@ -1,7 +0,0 @@ -import org.gradle.api.Project -import org.gradle.api.plugins.ExtensionAware -import org.gradle.api.plugins.ExtraPropertiesExtension - -internal val Project.ext: ExtraPropertiesExtension - get() = (this as ExtensionAware).extensions - .getByName("ext") as ExtraPropertiesExtension \ No newline at end of file diff --git a/ts-gradle/src/main/kotlin/Utils.kt b/ts-gradle/src/main/kotlin/Utils.kt deleted file mode 100644 index ba24d66..0000000 --- a/ts-gradle/src/main/kotlin/Utils.kt +++ /dev/null @@ -1,68 +0,0 @@ -import org.gradle.api.DomainObjectCollection -import org.gradle.api.NamedDomainObjectCollection -import org.gradle.api.Project -import org.gradle.api.artifacts.Configuration -import java.util.concurrent.TimeUnit - -fun Project.excludeTest() { - if (gradle.startParameter.taskNames.firstOrNull { taskName -> - taskName.contains("test", true) - } == null) { - tasks.run { - named("test") { it.enabled = false } - named("testClasses") { it.enabled = false } - named("compileTestJava") { it.enabled = false } - try { - named("compileTestKotlin") { it.enabled = false } - } catch (_: Exception) { - } - named("processTestResources") { it.enabled = false } - } - } -} - -fun DomainObjectCollection.noExpire() { - all { - it.resolutionStrategy.cacheChangingModulesFor(0, TimeUnit.SECONDS) - it.resolutionStrategy.cacheDynamicVersionsFor(0, TimeUnit.SECONDS) - } -} - -fun Project.useTursomRepositories( - useAliyunMirror: Boolean = false, - mavenCentral: Boolean = false, - tursom: Boolean = true -) { - repositories.run { - if (useAliyunMirror) { - maven { - it.url = uri("https://maven.aliyun.com/repository/public") - } - } - if (mavenCentral) { - mavenCentral() - } - if (tursom) { - maven { - it.url = uri("https://jmp.mvn.tursom.cn:20080/repository/maven-public") - } - } - } - try { - configurations.noExpire() - } catch (_: Exception) { - } -} - -fun NamedDomainObjectCollection.contains(name: String) = try { - findByName(name) -} catch (e: Exception) { - null -} != null - -operator fun Project.get(key: String) = ext[key]?.toString() - -val Project.isTestRunning - get() = gradle.startParameter.taskNames.firstOrNull { taskName -> - taskName.endsWith(":test") - } != null diff --git a/ts-gradle/ts-gradle-env/build.gradle.kts b/ts-gradle/ts-gradle-env/build.gradle.kts new file mode 100644 index 0000000..fd6f8e2 --- /dev/null +++ b/ts-gradle/ts-gradle-env/build.gradle.kts @@ -0,0 +1,12 @@ +dependencies { + implementation(group = "org.yaml", name = "snakeyaml", version = "2.0") +} + +gradlePlugin { + plugins { + create("ts-gradle-env") { + id = "ts-gradle-env" + implementationClass = "cn.tursom.gradle.EnvPlugin" + } + } +} diff --git a/ts-gradle/src/main/kotlin/cn/tursom/gradle/TursomGradlePlugin.kt b/ts-gradle/ts-gradle-env/src/main/kotlin/cn/tursom/gradle/EnvPlugin.kt similarity index 73% rename from ts-gradle/src/main/kotlin/cn/tursom/gradle/TursomGradlePlugin.kt rename to ts-gradle/ts-gradle-env/src/main/kotlin/cn/tursom/gradle/EnvPlugin.kt index 811e2ac..dc22198 100644 --- a/ts-gradle/src/main/kotlin/cn/tursom/gradle/TursomGradlePlugin.kt +++ b/ts-gradle/ts-gradle-env/src/main/kotlin/cn/tursom/gradle/EnvPlugin.kt @@ -1,17 +1,14 @@ package cn.tursom.gradle -import autoConfigPublish -import contains -import excludeTest -import ext -import org.gradle.api.DefaultTask import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.plugins.ExtensionAware +import org.gradle.api.plugins.ExtraPropertiesExtension import org.yaml.snakeyaml.Yaml import java.io.FileNotFoundException import java.util.* -class TursomGradlePlugin : Plugin { +class EnvPlugin : Plugin { companion object { val yaml = Yaml() var project: Project? = null @@ -33,22 +30,9 @@ class TursomGradlePlugin : Plugin { loadYaml(target, propertiesFile) } } - //println(target.ext.properties) - - target.excludeTest() - - if (!target.tasks.contains("install")) run install@{ - val publishToMavenLocal = target.tasks.findByName("publishToMavenLocal") ?: return@install - target.tasks.register("install", DefaultTask::class.java) { - it.finalizedBy(publishToMavenLocal) - } - } - - target.autoConfigPublish() } } - fun loadProperties(target: Project, propertiesFile: String) = try { val properties = Properties() properties.load(target.file(propertiesFile).inputStream()) @@ -60,7 +44,7 @@ fun loadProperties(target: Project, propertiesFile: String) = try { fun loadYaml(target: Project, propertiesFile: String) { try { - TursomGradlePlugin.yaml.load>(target.file(propertiesFile).inputStream()).forEach { (k, v) -> + EnvPlugin.yaml.load>(target.file(propertiesFile).inputStream()).forEach { (k, v) -> put(target, k, v) } } catch (e: Exception) { @@ -94,3 +78,7 @@ fun setProperty(target: Project, key: String, value: Any) { } catch (e: Exception) { } } + +val Project.ext: ExtraPropertiesExtension + get() = (this as ExtensionAware).extensions + .getByName("ext") as ExtraPropertiesExtension diff --git a/ts-gradle/src/main/kotlin/consts.kt b/ts-gradle/ts-gradle-env/src/main/kotlin/consts.kt similarity index 100% rename from ts-gradle/src/main/kotlin/consts.kt rename to ts-gradle/ts-gradle-env/src/main/kotlin/consts.kt diff --git a/ts-gradle/ts-gradle-install/build.gradle.kts b/ts-gradle/ts-gradle-install/build.gradle.kts new file mode 100644 index 0000000..95045c1 --- /dev/null +++ b/ts-gradle/ts-gradle-install/build.gradle.kts @@ -0,0 +1,8 @@ +gradlePlugin { + plugins { + create("ts-gradle-install") { + id = "ts-gradle-install" + implementationClass = "cn.tursom.gradle.InstallPlugin" + } + } +} diff --git a/ts-gradle/ts-gradle-install/src/main/kotlin/cn/tursom/gradle/InstallPlugin.kt b/ts-gradle/ts-gradle-install/src/main/kotlin/cn/tursom/gradle/InstallPlugin.kt new file mode 100644 index 0000000..747a0a8 --- /dev/null +++ b/ts-gradle/ts-gradle-install/src/main/kotlin/cn/tursom/gradle/InstallPlugin.kt @@ -0,0 +1,23 @@ +package cn.tursom.gradle + +import org.gradle.api.DefaultTask +import org.gradle.api.NamedDomainObjectCollection +import org.gradle.api.Plugin +import org.gradle.api.Project + +class InstallPlugin : Plugin { + override fun apply(target: Project) { + if (!target.tasks.contains("install")) run install@{ + val publishToMavenLocal = target.tasks.findByName("publishToMavenLocal") ?: return@install + target.tasks.register("install", DefaultTask::class.java) { + it.finalizedBy(publishToMavenLocal) + } + } + } +} + +fun NamedDomainObjectCollection.contains(name: String) = try { + findByName(name) +} catch (e: Exception) { + null +} != null diff --git a/ts-gradle/ts-gradle-no-test/build.gradle.kts b/ts-gradle/ts-gradle-no-test/build.gradle.kts new file mode 100644 index 0000000..b0dd312 --- /dev/null +++ b/ts-gradle/ts-gradle-no-test/build.gradle.kts @@ -0,0 +1,8 @@ +gradlePlugin { + plugins { + create("ts-gradle-no-test") { + id = "ts-gradle-no-test" + implementationClass = "cn.tursom.gradle.NoTestPlugin" + } + } +} diff --git a/ts-gradle/ts-gradle-no-test/src/main/kotlin/cn/tursom/gradle/NoTestPlugin.kt b/ts-gradle/ts-gradle-no-test/src/main/kotlin/cn/tursom/gradle/NoTestPlugin.kt new file mode 100644 index 0000000..e9b2e7f --- /dev/null +++ b/ts-gradle/ts-gradle-no-test/src/main/kotlin/cn/tursom/gradle/NoTestPlugin.kt @@ -0,0 +1,31 @@ +package cn.tursom.gradle + +import org.gradle.api.Plugin +import org.gradle.api.Project + +class NoTestPlugin : Plugin { + override fun apply(target: Project) { + target.excludeTest() + } +} + +fun Project.excludeTest() { + if (gradle.startParameter.taskNames.firstOrNull { taskName -> + taskName.contains("test", true) + } == null) { + try { + tasks.run { + named("test") { it.enabled = false } + named("testClasses") { it.enabled = false } + named("compileTestJava") { it.enabled = false } + try { + named("compileTestKotlin") { it.enabled = false } + } catch (_: Exception) { + } + named("processTestResources") { it.enabled = false } + } + } catch (e: Exception) { + println("W: exclude tests failed with ${e.javaClass.name}: ${e.message}") + } + } +} diff --git a/ts-gradle/ts-gradle-publish/build.gradle.kts b/ts-gradle/ts-gradle-publish/build.gradle.kts new file mode 100644 index 0000000..0561cbe --- /dev/null +++ b/ts-gradle/ts-gradle-publish/build.gradle.kts @@ -0,0 +1,12 @@ +dependencies { + implementation(project(":ts-gradle-env")) +} + +gradlePlugin { + plugins { + create("ts-gradle-publish") { + id = "ts-gradle-publish" + implementationClass = "cn.tursom.gradle.PublishPlugin" + } + } +} diff --git a/ts-gradle/src/main/kotlin/publish.kt b/ts-gradle/ts-gradle-publish/src/main/kotlin/cn/tursom/gradle/PublishPlugin.kt similarity index 95% rename from ts-gradle/src/main/kotlin/publish.kt rename to ts-gradle/ts-gradle-publish/src/main/kotlin/cn/tursom/gradle/PublishPlugin.kt index 087afbd..117227e 100644 --- a/ts-gradle/src/main/kotlin/publish.kt +++ b/ts-gradle/ts-gradle-publish/src/main/kotlin/cn/tursom/gradle/PublishPlugin.kt @@ -1,10 +1,21 @@ +package cn.tursom.gradle + +import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.artifacts.dsl.RepositoryHandler import org.gradle.api.artifacts.repositories.PasswordCredentials +import org.gradle.api.plugins.ExtensionAware +import org.gradle.api.plugins.ExtraPropertiesExtension import org.gradle.api.publish.PublicationContainer import org.gradle.api.publish.PublishingExtension import org.gradle.api.publish.maven.MavenPublication +class PublishPlugin : Plugin { + override fun apply(target: Project) { + target.autoConfigPublish() + } +} + fun Project.autoConfigPublish() { try { extensions.configure(PublishingExtension::class.java, ::publish) @@ -173,4 +184,4 @@ private fun Project.getVersionWithProperties(): String { } return version -} \ No newline at end of file +} diff --git a/ts-gradle/ts-gradle-repos/build.gradle.kts b/ts-gradle/ts-gradle-repos/build.gradle.kts new file mode 100644 index 0000000..2101d95 --- /dev/null +++ b/ts-gradle/ts-gradle-repos/build.gradle.kts @@ -0,0 +1,14 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +gradlePlugin { + plugins { + create("ts-gradle-repos") { + id = "ts-gradle-repos" + implementationClass = "cn.tursom.gradle.ReposPlugin" + } + } +} + +tasks.withType().configureEach { + kotlinOptions.freeCompilerArgs += "-Xcontext-receivers" +} diff --git a/ts-gradle/src/main/kotlin/cn/tursom/gradle/TursomServerDependencies.kt b/ts-gradle/ts-gradle-repos/src/main/kotlin/cn/tursom/gradle/Dependencies.kt similarity index 99% rename from ts-gradle/src/main/kotlin/cn/tursom/gradle/TursomServerDependencies.kt rename to ts-gradle/ts-gradle-repos/src/main/kotlin/cn/tursom/gradle/Dependencies.kt index 0a50882..9ce99c7 100644 --- a/ts-gradle/src/main/kotlin/cn/tursom/gradle/TursomServerDependencies.kt +++ b/ts-gradle/ts-gradle-repos/src/main/kotlin/cn/tursom/gradle/Dependencies.kt @@ -6,7 +6,7 @@ import org.gradle.api.Action import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.artifacts.dsl.DependencyHandler -private const val defaultVersion = "1.0-SNAPSHOT" +private const val defaultVersion = "1.1-SNAPSHOT" private fun DependencyHandler.add( configurationName: String, diff --git a/ts-gradle/ts-gradle-repos/src/main/kotlin/cn/tursom/gradle/ReposPlugin.kt b/ts-gradle/ts-gradle-repos/src/main/kotlin/cn/tursom/gradle/ReposPlugin.kt new file mode 100644 index 0000000..434cf9e --- /dev/null +++ b/ts-gradle/ts-gradle-repos/src/main/kotlin/cn/tursom/gradle/ReposPlugin.kt @@ -0,0 +1,54 @@ +package cn.tursom.gradle + +import org.gradle.api.DomainObjectCollection +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.api.artifacts.Configuration +import org.gradle.api.artifacts.dsl.RepositoryHandler +import java.util.concurrent.TimeUnit + +class ReposPlugin : Plugin { + override fun apply(target: Project) { + target.useTursomRepositories() + } +} + +fun Project.useTursomRepositories( + useAliyunMirror: Boolean = false, + mavenCentral: Boolean = false, + tursom: Boolean = true +) { + repositories.useTursomRepositories(useAliyunMirror, mavenCentral, tursom) + try { + configurations.noExpire() + } catch (_: Exception) { + } +} + +context (Project) +fun RepositoryHandler.useTursomRepositories( + useAliyunMirror: Boolean, + mavenCentral: Boolean, + tursom: Boolean +) { + if (useAliyunMirror) { + maven { + it.url = project.uri("https://maven.aliyun.com/repository/public") + } + } + if (mavenCentral) { + mavenCentral() + } + if (tursom) { + maven { + it.url = project.uri("https://jmp.mvn.tursom.cn:20080/repository/maven-public") + } + } +} + +fun DomainObjectCollection.noExpire() { + all { + it.resolutionStrategy.cacheChangingModulesFor(0, TimeUnit.SECONDS) + it.resolutionStrategy.cacheDynamicVersionsFor(0, TimeUnit.SECONDS) + } +} diff --git a/ts-socket/build.gradle.kts b/ts-socket/build.gradle.kts index 1ed00ea..9192e33 100644 --- a/ts-socket/build.gradle.kts +++ b/ts-socket/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":ts-core")) implementation(project(":ts-core:ts-coroutine")) diff --git a/ts-web/build.gradle.kts b/ts-web/build.gradle.kts index 1c4ad13..6385a82 100644 --- a/ts-web/build.gradle.kts +++ b/ts-web/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { implementation(project(":ts-core")) implementation(project(":ts-core:ts-buffer")) diff --git a/ts-web/ts-web-coroutine/build.gradle.kts b/ts-web/ts-web-coroutine/build.gradle.kts index 3379e04..2b3d0c4 100644 --- a/ts-web/ts-web-coroutine/build.gradle.kts +++ b/ts-web/ts-web-coroutine/build.gradle.kts @@ -1,7 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} dependencies { implementation(project(":")) diff --git a/ts-web/ts-web-netty-client/build.gradle.kts b/ts-web/ts-web-netty-client/build.gradle.kts index 1a9146d..d1be69b 100644 --- a/ts-web/ts-web-netty-client/build.gradle.kts +++ b/ts-web/ts-web-netty-client/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - val brotliVersion = "1.7.1" val operatingSystem: OperatingSystem = org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.getCurrentOperatingSystem() diff --git a/ts-web/ts-web-netty/build.gradle.kts b/ts-web/ts-web-netty/build.gradle.kts index b39675e..5814d52 100644 --- a/ts-web/ts-web-netty/build.gradle.kts +++ b/ts-web/ts-web-netty/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(project(":ts-core")) api(project(":ts-core:ts-buffer")) diff --git a/ts-web/ts-web-okhttp/build.gradle.kts b/ts-web/ts-web-okhttp/build.gradle.kts index 48a3552..643b798 100644 --- a/ts-web/ts-web-okhttp/build.gradle.kts +++ b/ts-web/ts-web-okhttp/build.gradle.kts @@ -1,8 +1,3 @@ -plugins { - kotlin("jvm") - id("ts-gradle") -} - dependencies { api(project(":ts-core")) api(project(":ts-core:ts-buffer"))