我正在尝试使用 Spring Boot Gradle 插件的 3.0.0 版本。这是我的 build.gradle.kts 文件:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("org.springframework.boot") version "3.0.0"
id("io.spring.dependency-management") version "1.1.0"
kotlin("jvm") version "1.7.20"
kotlin("plugin.spring") version "1.7.20"
id("org.jlleitschuh.gradle.ktlint") version "11.0.0"
}
java.sourceCompatibility = JavaVersion.VERSION_17
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-r2dbc")
implementation("org.springframework.boot:spring-boot-starter-webflux")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("io.projectreactor.kotlin:reactor-kotlin-extensions")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
runtimeOnly("org.postgresql:postgresql")
runtimeOnly("org.postgresql:r2dbc-postgresql")
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("io.projectreactor:reactor-test")
jdbc("org.postgresql:postgresql:42.5.0")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "17"
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
Run Code Online (Sandbox Code Playgroud)
我在下面粘贴了错误。我知道这不是网络问题,因为当我将版本更改为 2.7.6 时,错误消失了。
> Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.0.
Required by:
project …Run Code Online (Sandbox Code Playgroud) 我将 Spring Boot 应用程序升级到 2.5.0,然后是 app.jar 和 app-plain.jar 是由 gradle 创建的。
我想知道这些罐子之间的区别。
谢谢
什么是正确的摇篮配置看起来像在使用该插件摇篮多模块项目spring-boot-dependencies和spring-boot?
我有以下项目设置:
parent
|
+ build.gradle
|
+ alpha
| |
| + build.gradle
|
+ beta
| |
| + build.gradle
Run Code Online (Sandbox Code Playgroud)
parent模块包含常见的项目配置.alpha模块是一个模块,我想在其中使用spring-boot-dependencies bom中指定的版本号导入依赖项,但结果是标准jar.beta模块是一个依赖的模块,alpha结果是一个可执行的Spring Boot jar文件(包括所有依赖项).因此,该项目既需要插件spring-boot-dependencies也需要spring-boot插件.为了保持Gradle文件DRY,我已经将常用模块脚本提取到父build.gradle文件中.
尝试$ gradle build使用下面的项目配置执行会导致:
> Plugin with id 'io.spring.dependency-management' not found.
Run Code Online (Sandbox Code Playgroud)
parent gradle.build
allprojects {
group = "com.example"
version '0.0.1-SNAPSHOT'
ext {
dependencyManagementPluginVersion = '0.5.3.RELEASE'
springBootVersion = '1.3.0.RC1'
}
apply plugin: …Run Code Online (Sandbox Code Playgroud) dependency-management gradle spring-boot spring-boot-gradle-plugin
我正在尝试在我的spring boot项目构建中实现一个简单的场景:包括/排除依赖项和打包war或jar,具体取决于环境.
因此,例如,对于环境dev包括devtools和包装罐,prod包装战争等.
我知道它不再是基于XML的配置了,我基本上可以在build.gradle中编写if语句,但有没有推荐的实现方法?
我可以声明一些常见的依赖项并在单个文件中引用它们而不是创建多个构建文件吗?
是否有基于构建目标环境更改构建配置的最佳实践?
java gradle build.gradle spring-boot spring-boot-gradle-plugin
我有一个具有以下层次结构的示例项目:
Sample (root)
-- model (simple jar)
-- api (springboot jar)
Run Code Online (Sandbox Code Playgroud)
我想将两个生成的 jars:plain jar 和 bootJar 发布到我的 localRepository。
gradlew clean build -xTest publishToMavenLocal
Run Code Online (Sandbox Code Playgroud)
但是,出现以下错误:
* What went wrong:
Execution failed for task ':api:publishMavenJavaPublicationToMavenLocal'.
> Failed to publish publication 'mavenJava' to repository 'mavenLocal'
> Artifact api.jar wasn't produced by this build.
Run Code Online (Sandbox Code Playgroud)
根 build.gradle 如下:
plugins {
id 'java'
id "org.springframework.boot" version "2.2.5.RELEASE" apply false
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
}
group 'sample'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories { …Run Code Online (Sandbox Code Playgroud) 我在Gradle项目中使用Spring Boot 2在Jenkins中进行jar的构建,我想更改该jar文件的名称。
默认情况下,Spring Boot 2使用Gradle属性rootProject.name,可以在/settings.gradle文件中设置该属性。
但是,我想更改jar文件名,而不更改rootProject.name。
这是我bootJar和文件的springBoot各个部分build.gradle:
bootJar {
launchScript()
}
Run Code Online (Sandbox Code Playgroud)
。
springBoot {
buildInfo {
properties {
artifact = "jarName"
group = "groupName"
name = "projectName"
version = "1.0"
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意: artifact阅读后没有设置罐子名称,正如我期望的那样:https : //docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/#integrating-with-actuator
I have build.gradle like this and it works :
plugins {
id 'org.springframework.boot' version '2.5.8' apply false
...
}
...
springBoot {
mainClassName = 'com.mir3.service.contactfileparser.Main'
}
Run Code Online (Sandbox Code Playgroud)
but if I upgrade spring boot version to 2.6.2 it fails with error:
plugins {
id 'org.springframework.boot' version '2.6.2' apply false
...
}
...
springBoot {
mainClassName = 'com.mir3.service.contactfileparser.Main'
}
Run Code Online (Sandbox Code Playgroud)
Error text is:
A problem occurred evaluating root project 'myProject'.
> Could not set unknown property 'mainClassName' for extension 'springBoot' of type org.springframework.boot.gradle.dsl.SpringBootExtension.
Run Code Online (Sandbox Code Playgroud)
How …
我有 Spring Boot 应用程序,它通过@JmsListener组件类中的注释监听 IBM MQ 队列,如下所示。MQ 属性(主机名、通道、端口等)是从yaml文件设置的。
@JmsListener(destination = "<QueueName>")
public void receiveMessage(BytesMessage msg) {
//snippet to read msg
}
Run Code Online (Sandbox Code Playgroud)
MQ 依赖项添加到 gradle 构建中,如下所示,
compile("com.ibm.mq:mq-jms-spring-boot-starter:0.0.2") {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
Run Code Online (Sandbox Code Playgroud)
只要我使用 Tomcat 容器在本地运行应用程序,就可以正常工作并监听消息。但是,如果我将其打包为 EAR 并部署到 Wesbphere8.5 服务器,它会抛出以下异常,并且侦听器不会从队列中读取消息。我确认所有运行时依赖项都打包在 EAR 中。尝试使用不同版本的 MQ 依赖项,但没有成功。
2018-07-10 15:21:16,531 错误 DefaultMessageListenerContainer - 无法刷新目标“QueueName”的 JMS 连接 - 使用 FixBackOff{interval=5000, currentAttempts=34, maxAttempts=unlimited} 重试。原因:JMSFMQ6312:Java(tm) MQI 中发生异常。嵌套异常是 com.ibm.mq.jmqi.JmqiException: CC=2;RC=2195;AMQ9546: 收到错误返回代码。[1=java.lang.reflect.InitationTargetException[null],3=NativeConstructorAccessorImpl.newInstance0]
需要帮助来解决此问题。
spring-jms websphere-8 spring-boot spring-boot-gradle-plugin ibm-mq
我有一个 Gradle 项目,它使用Spring 的依赖管理插件来定义依赖版本列表。我还使用Maven 插件将项目部署到 Maven 存储库。
我希望能够将其部署为 Maven 物料清单 (BOM),以便我可以在其他 Gradle 项目中使用它来定义我的依赖版本。只要我还部署了一个 JAR 文件,我就能够让它工作。但是,JAR 完全是空的和多余的。我的目标是只生成和部署 POM 文件,就像我可以做的那样,如果这是一个带有“pom”包装的 Maven 项目。
如果我从要发布的工件列表中手动排除 JAR,则不会安装任何内容,甚至不会安装 POM 文件。
这是一个测试版本,用于演示该问题:
group 'test'
version '1.0.0-SNAPSHOT'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.5.1.RELEASE' //Matches the Spring IO version
}
}
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'maven'
dependencyManagement {
dependencies {
dependency 'cglib:cglib-nodep:3.2.4'
dependency 'junit:junit:4.12'
}
}
////Uncommenting this causes nothing at all to be deployed:
//jar.enabled = …Run Code Online (Sandbox Code Playgroud) 我已经更新了我的项目以使用 springboot 2.3.0 并尝试使用默认的 springboot gradle 任务 bootBuildImage 构建 docker 镜像。
该项目是一个简单的休息项目,分为两部分:-接口定义和接口实现。所有这一切都是在我使用 Dockerfile 构建映像的同时,但我正在尝试尝试新功能。
我没有更改任何配置,也没有添加任何自定义。我只是作为普通的香草任务,但遇到以下问题。
DAREYOURDREAM-96TZ:tm-provisioning dareyourdream$ gradle bootBuildImage --scan
Picked up _JAVA_OPTIONS: -Xms1024m -Xmx8192m -XX:MaxPermSize=1024m
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=1024m; support was removed in 8.0
> Task :bootBuildImage
Building image 'docker.io/library/tm-provisioning:0.0.1-SNAPSHOT'
> Pulling builder image 'gcr.io/paketo-buildpacks/builder:base-platform-api-0.3' ..................................................
> Pulled builder image 'gcr.io/paketo-buildpacks/builder@sha256:200fb7945ef0f4a3c79befb1262fd592f54ba7b7ffcc8a37716434dd11d0e5e9'
> Pulling run image 'gcr.io/paketo-buildpacks/run:base-cnb' ..................................................
> Pulled run image 'gcr.io/paketo-buildpacks/run@sha256:f7f27462fb513a70370322ada08440a642d24a700056d4c6b8cbb344610bf486'
> Executing lifecycle version v0.7.5
> Using build cache volume 'pack-cache-defc64ac2d6d.build'
> …Run Code Online (Sandbox Code Playgroud) spring-boot ×8
gradle ×6
build.gradle ×2
java ×2
ibm-mq ×1
maven ×1
maven-bom ×1
nexus ×1
spring ×1
spring-jms ×1
websphere-8 ×1