バックグラウンド:
現在、マルチモジュール (マルチプロジェクト) のアプリケーション リポジトリがあります。「ルート」は実行可能なアプリケーションではありません。build.gradle.kts
すべてのサブプロジェクトに共通する依存関係とプラグインを保持するルート ファイルがあるのは、単なるソース ディレクトリです。私のサブプロジェクトにはそれぞれ独自のbuild.gradle.kts
.
したがって、私の全体的なプロジェクト構造は次のようになります。
my_root_project
- gradle
- wrapper
- gradle-wrapper.jar
- gradle-wrapper.properties
- gradle.build.kts
- settings.gradle.kts
- my_nested_project_a
- src
- main
- kotlin
- my_nested_project_b
...
問題:
を実行するたびにgradle build
、次のエラーが表示されます。
> Task :bootJar FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':bootJar'.
> Main class name has not been configured and it could not be resolved
ただし、サブプロジェクト (例: build :my_nested_project_a:build
) のいずれかを実行すると、正常にビルドされます。
現在の Gradle ビルド ファイル
現在「ルート」にあるものは次のgradle.build.kts
とおりです。
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
group = "com.example"
version = "1.0.0"
java.sourceCompatibility = JavaVersion.VERSION_1_8
java.targetCompatibility = JavaVersion.VERSION_1_8
plugins {
id("org.springframework.boot") version "2.1.8.RELEASE" apply false
id("io.spring.dependency-management") version "1.0.8.RELEASE" apply false
kotlin("jvm") version "1.3.50"
kotlin("plugin.spring") version "1.3.50"
kotlin("plugin.jpa") version "1.3.50"
kotlin("plugin.allopen") version "1.3.50"
}
allprojects {
repositories {
maven(url = "https://my.company.com/repo/with/all/the/stuff/I/need")
}
apply(plugin = "org.jetbrains.kotlin.jvm")
apply(plugin = "java")
apply(plugin = "org.springframework.boot")
apply(plugin = "io.spring.dependency-management")
apply(plugin = "org.jetbrains.kotlin.plugin.spring")
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
}
}
}
注: を使用
apply false
してビルドするときに gradle がメイン クラスを見つけようとしなくなると考えたため、プラグインで使用していますgradle build
。
私がやろうとしていること:
すべてのサブプロジェクトのタスクをgradle build
実行する必要がある単純に実行したい CI パイプラインがあります。build
ただし、そのプロセスでは、「ルート」プロジェクトのビルドの実行を無視するか、実行可能なアプリケーションではないためバイパスして、サブプロジェクトのみをビルドしたいと思います。
どんな助けでも大歓迎です!:)