From 5e181496406ffdef55a9982489aa3f39e6779794 Mon Sep 17 00:00:00 2001 From: LamGC Date: Wed, 18 May 2022 15:57:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(config):=20=E6=94=AF=E6=8C=81=E9=99=90?= =?UTF-8?q?=E5=AE=9A=20Maven=20=E4=BB=93=E5=BA=93=E6=9E=84=E4=BB=B6?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加 Maven 仓库配置, 支持限定仓库可获取的构件发布类型(发布或快照). 此改动有利于用户增加仓库约束, 防止意外使用错误的扩展包版本. --- scalabot-app/src/main/kotlin/AppConfigs.kt | 6 ++++-- scalabot-app/src/main/kotlin/util/Serializers.kt | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/scalabot-app/src/main/kotlin/AppConfigs.kt b/scalabot-app/src/main/kotlin/AppConfigs.kt index ad3796d..090370b 100644 --- a/scalabot-app/src/main/kotlin/AppConfigs.kt +++ b/scalabot-app/src/main/kotlin/AppConfigs.kt @@ -106,6 +106,8 @@ internal data class MavenRepositoryConfig( val url: URL, val proxy: Proxy? = Proxy("http", "127.0.0.1", 1080), val layout: String = "default", + val enableReleases: Boolean = true, + val enableSnapshots: Boolean = true, // 可能要设计个 type 来判断解析成什么类型的 Authentication. val authentication: Authentication? = null ) { @@ -121,14 +123,14 @@ internal data class MavenRepositoryConfig( builder.setReleasePolicy( RepositoryPolicy( - true, + enableReleases, RepositoryPolicy.UPDATE_POLICY_NEVER, RepositoryPolicy.CHECKSUM_POLICY_FAIL ) ) builder.setSnapshotPolicy( RepositoryPolicy( - true, + enableSnapshots, RepositoryPolicy.UPDATE_POLICY_ALWAYS, RepositoryPolicy.CHECKSUM_POLICY_WARN ) diff --git a/scalabot-app/src/main/kotlin/util/Serializers.kt b/scalabot-app/src/main/kotlin/util/Serializers.kt index f4a5698..0257c28 100644 --- a/scalabot-app/src/main/kotlin/util/Serializers.kt +++ b/scalabot-app/src/main/kotlin/util/Serializers.kt @@ -142,12 +142,15 @@ internal object MavenRepositoryConfigSerializer return when (json) { is JsonObject -> { MavenRepositoryConfig( + id = json.get("id")?.asString, url = URL(checkJsonKey(json, "url")), proxy = if (json.has("proxy") && json.get("proxy").isJsonObject) context.deserialize( json.getAsJsonObject("proxy"), Proxy::class.java ) else null, layout = json.get("layout").asString ?: "default", + enableReleases = json.get("enableReleases")?.asBoolean ?: true, + enableSnapshots = json.get("enableSnapshots")?.asBoolean ?: true, authentication = if (json.has("authentication") && json.get("authentication").isJsonObject) context.deserialize( json.getAsJsonObject("authentication"), Authentication::class.java