【发布时间】:2022-02-04 20:11:51
【问题描述】:
我有一个基于默认 gradle 约定的 Spring Boot 的多项目 gradle 构建。
root
-- common
-- src/main/java
-- bootproject
-- src/main/java
我目前的项目是 (A) 将 gradle 从 5.x 升级到 7.3.x 和 (B) 使用 Spring Boot 的嵌入式 tomcat。
这是一个存在多年的项目,是 Spring Boot,但传统上一直以 WAR 文件的形式部署在 Tomcat 中。
我已按照 gradle 迁移指南将 gradle 升级到 7.3.3,并且“通用”构建正确(java-library)。我现在正在尝试再次正确构建“bootproject”。我已经迁移了我的 build.gradle,现在编译正确,但是在执行 'gradlew sub-project:build' 时出现错误:
任务“:tx-main:bootWarMainClassName”执行失败。 java.lang.IllegalArgumentException(没有错误信息)
我的 ROOT build.gradle 很简单:
plugins {
id "org.springframework.boot" version "2.6.3"
}
subprojects {
apply plugin: 'java'
group = 'com.blah'
version = '2.1.1'
repositories {
mavenCentral()
}
有一个构建良好的库子项目(通用)。
Spring Boot 子项目 build.gradle 是:
plugins {
id 'org.springframework.boot'
id 'io.spring.dependency-management'
}
dependencies {
implementation project(path:':common', configuration:'default')
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation ...
}
最初设置主类以使应用程序按常规部署(扩展 SpringBootServletInitializer),但已替换为(直接取自文档):
package com.blah;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
编译工作,这个类似乎在构建/类路径中,所以我不明白为什么 Gradle-Spring-Boot 没有找到它。我也尝试过明确标识具有相同结果的类。
不幸的是,我发现关于多项目 gradle 构建的文档很少,所以我怀疑这是问题的一部分。希望这里的人能指出我正确的方向,什么是错的。
谢谢
【问题讨论】:
标签: spring-boot gradle spring-boot-gradle-plugin