さまざまなレイヤー(web、business、dataAccess、common)のサブプロジェクトを使用して、gradleでSpring Bootプロジェクトを作成しようとしています。
私は公式のGradleガイドのCreateing Multi-Projects buildsの指示に従いました。
どちらのサブプロジェクトも、元々はSpring.ioで作成されています。
問題
他のサブプロジェクトdataAccessで共通User
のサブプロジェクトのクラスを使用しようとしています。インポートはIntellijで正常に機能します。しかし、見つからないためにタスクを実行すると失敗します。gradlew :dataAccess:compileJava
User
タスク:dataAccess:compileJava FAILED ... \ dataAccess \ src \ main \ java \ ch \ wprogLK \ MyProject \ backend \ dataAccess \ MyProjectDataApplication.java:23:エラー:シンボルが見つかりませんUser u = new User(); ^記号:クラスユーザーの場所:クラスMyProjectDataApplication)
一般的なプロジェクトでは、前にコンパイルさDATAACCESSのプロジェクト。dataAccessプロジェクトがコンパイル時に共通プロジェクトについて何も知らないのは、gradle構成の問題だと思います(おそらくクラスパスの問題でしょうか?)。手伝ってくれて嬉しいです。ありがとう。
プロジェクトのセットアップ
コード
MyProject /build.gradle
plugins {
id 'org.springframework.boot' version '2.1.8.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id 'java'
}
group = 'ch.wprogLK'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
allprojects {
apply plugin: 'java'
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
MyProject /settings.gradle
rootProject.name = 'MyProject'
include 'common'
include 'dataAccess'
MyProject / 共通 /build.gradle
plugins {
id 'org.springframework.boot'
id 'io.spring.dependency-management'
id 'java'
}
group = 'ch.wprogLK'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
}
MyProject / 共通 /settings.gradle
rootProject.name = 'common'
MyProject / common /src/main/java/ch/wprogLK/myProject/backend/common/entities/User.java
package ch.wprogLK.myProject.backend.common.entities;
public class User
{
private Long userId;
private String username;
}
MyProject / dataAccess /build.gradle
plugins {
id 'org.springframework.boot'
id 'io.spring.dependency-management'
id 'java'
}
group = 'ch.wprogLK'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
compile project(":common")
}
MyProject / dataAccess /settings.gradle
rootProject.name = 'dataAccess'
MyProject / dataAccess /src/main/java/ch/wprogLK/myProject/backend/dataAccess/MyProjectDataApplication.java
package ch.wprogLK.myProject.backend.dataAccess;
import ch.wprogLK.myProject.backend.common.entities.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyProjectDataApplication
{
public static void main(String[] args)
{
SpringApplication.run(MyProjectDataApplication.class, args);
}
public MyProjectDataApplication()
{
User u = new User(); //This line is the problem when running gradle :dataAccess:javaCompile
}
}
それがcommon
ライブラリであることを示すために2つの構成を設定することはありません。したがって、次の設定を追加してcompile
、run
プロジェクトのルートから。
common build.gradle
bootJar {
enabled = false
}
jar {
enabled = true
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加