当前位置: 首页 > 知识库问答 >
问题:

如何发布一个没有来源的JAR?

鲁鸿朗
2023-03-14

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

data-cassandra
-- cassandra-autoconfigure
-- cassandra-starter

cassandra autoconfigure有源代码,其他两个没有。cassandra starter的人生目标是将cassandra autoconfigure作为api(project(“:cassandra autoconfigure”);这是Spring Boot的标准惯例cassandra starter有一些测试代码,但在src/main/kotlin中没有。

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

Artifact cassandra-starter-1.0.0-SNAPSHOT.jar wasn't produced by this build.

这是真的,我可以看到

数据卡桑德拉/构建。格雷德尔。kts:

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}")
    }
}

卡桑德拉自动配置/构建。格雷德尔。kts

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")
}

卡桑德拉初学者/构建。格雷德尔。kts

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
}

共有1个答案

华浩壤
2023-03-14

回答我自己的问题,来自Spring Boot docs:

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

卡桑德拉初学者/构建。格雷德尔。kts

tasks.jar {
    enabled = true
}

解决了这个问题。

 类似资料:
  • 问题内容: 我正在使用Tensorflow + Python。 我很好奇是否可以在没有详细源代码的情况下发布保存的Tensorflow模型(体系结构+训练有素的变量)。我知道,但是它看起来只保存变量,并且为了还原/运行它们,用户需要“定义”相同的体系结构。 仅出于测试/运行目的,有没有办法释放没有源代码的保存的{architecture + trained variables},以便用户可以进行查

  • 我正在试着检测是否从短信中得到期望响应。所以我需要访问收到的文本的文本视图。我遇到的问题是我无法找到一种方法让驱动程序知道我需要接收的文本而不是发送的文本。 ui选择器的第一个图像显示了发送的文本被突出显示在这里它显示了id、class、package和resourse-id(不在帧内) 在ui选择器的第二个图像中,显示了接收到的文本,这里显示了id、class(超出帧)、package和reso

  • 我正在尝试使用Visual Studio 2015和. NET 4.5.1创建Web应用程序。当我发布网站时,Visual Studio会创建名为的文件夹。 我知道它是用来动态编译代码的,但不幸的是我的主机提供商不允许我在他们的服务器上执行编译器。 如何像以前版本的Visual Studio那样在没有的情况下发布网站? 编辑:我在尝试访问我的网站时遇到了这个错误。 似乎IIS试图执行< code>

  • 问题内容: 是否有一个很好的方法来Map 获取和忽略案件? 问题答案: TreeMap扩展了Map并支持自定义比较器。 字符串提供默认的不区分大小写的比较器。 所以: 比较器不考虑区域设置。在其JavaDoc中阅读有关它的更多信息。

  • 我有一个javaScript代码,其中我发送了带有一些参数的http post。Post参数是一个类似于以下内容的json: 在JavaScript中,我只是打开request、设置头和发送参数。Post请求如下所示: 现在我需要在Java中进行相同的调用(由于一些内部POC需求)。为此,我做了以下几点: 但这给了我错误。 提前道谢。