首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何发布没有源的JAR?

如何发布没有源的JAR?
EN

Stack Overflow用户
提问于 2020-09-02 23:17:05
回答 1查看 403关注 0票数 0

我有一个多模块的Kotlin Gradle项目:

代码语言:javascript
运行
复制
data-cassandra
-- cassandra-autoconfigure
-- cassandra-starter

cassandra-autoconfigure有源代码,其他两个没有。cassandra-starter在生活中的目的是把cassandra-autoconfigure作为api(project(":cassandra-autoconfigure"))引入;这是一个春季启动的标准公约cassandra-starter有一些测试代码,但在src/main/kotlin中没有。

问题是,当我试图发布这些项目时,它是失败的。

代码语言:javascript
运行
复制
Artifact cassandra-starter-1.0.0-SNAPSHOT.jar wasn't produced by this build.

这是真的,我可以看到> Task :cassandra-starter:jar SKIPPED。如何强制Gradle构建只包含META-INF的jar?

data-cassandra/build.gradle.kts

代码语言:javascript
运行
复制
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    java
    kotlin("jvm") apply false
    `maven-publish`
}

allprojects {
    group = "mycompany.data"
    version = "1.0.0-SNAPSHOT"

    repositories {
        mavenCentral()
    }
}

subprojects {
    apply(plugin = "kotlin")
    apply(plugin = "maven-publish")

    tasks.withType<Test> {
        useJUnitPlatform()
    }

    tasks.withType<KotlinCompile> {
        kotlinOptions {
            freeCompilerArgs = listOf(
                "-Xjsr305=strict"
            )
            jvmTarget = "11"
        }
    }

    plugins.withType<JavaPlugin> {
        extensions.configure<JavaPluginExtension> {
            sourceCompatibility = JavaVersion.VERSION_11
            targetCompatibility = JavaVersion.VERSION_11
        }
        val springBootVersion: String by project
        dependencies {
            implementation(platform("org.springframework.boot:spring-boot-dependencies:$springBootVersion"))
            implementation("org.jetbrains.kotlin:kotlin-reflect")
            implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
            testImplementation("org.springframework.boot:spring-boot-starter-test") {
                exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
                exclude(group = "com.vaadin.external.google", module = "android-json")
            }
        }
    }

    val isSnapshot = project.version.toString().toLowerCase().endsWith("snapshot")
    val artifactoryUrl = property("artifactoryUrl") as String

    extensions.configure<PublishingExtension> {
        publications {
            create<MavenPublication>("maven") {
                from(components["java"])
            }
            repositories {
                maven {
                    url = uri(artifactoryUrl + if (isSnapshot) "/libs-snapshot-local" else "/libs-release-local")
                    credentials {
                        username = property("artifactoryUsername") as String
                        password = property("artifactoryPassword") as String
                    }
                    if (!artifactoryUrl.startsWith("https")) {
                        isAllowInsecureProtocol = true
                    }
                }
            }
        }
    }
}

tasks.withType<PublishToMavenRepository> {
    doFirst {
        println("Publishing ${publication.groupId}:${publication.artifactId}:${publication.version} to ${repository.url}")
    }
}

cassandra-autoconfigure/build.gradle.kts

代码语言:javascript
运行
复制
plugins {
    kotlin("jvm")
    kotlin("plugin.spring")
}

val springDataVersion: String by project
dependencies {
    implementation(platform("org.springframework.data:spring-data-releasetrain:$springDataVersion"))
    api("org.springframework.boot:spring-boot-starter-data-cassandra-reactive")
}

cassandra-starter/build.gradle.kts

代码语言:javascript
运行
复制
plugins {
    id("org.springframework.boot")
    kotlin("jvm")
    kotlin("plugin.spring")
}

val cassandraUnitVersion: String by project
dependencies {
    api(project(":cassandra-autoconfigure"))
    testImplementation("org.cassandraunit:cassandra-unit:$cassandraUnitVersion") {
        exclude(group = "org.hibernate", module = "hibernate-validator")
    }
}

tasks.bootJar {
    enabled = false
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-02 23:44:05

回答我自己的问题,来自弹簧启动文件

默认情况下,在配置bootJar或bootWar任务时,将禁用jar或war任务。可以通过启用jar或war任务,将项目配置为同时构建可执行存档和普通存档:

cassandra-starter/build.gradle.kts

代码语言:javascript
运行
复制
tasks.jar {
    enabled = true
}

解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63714701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档