Gradle compileJavaの実行中に関連するサブプロジェクトで「シンボルエラーが見つかりません」を修正する方法

進捗:

さまざまなレイヤー(web、business、dataAccess、common)のサブプロジェクトを使用して、gradleでSpring Bootプロジェクトを作成しようとしています。

私は公式のGradleガイドのCreateing Multi-Projects buildsの指示に従いました

どちらのサブプロジェクトも、元々はSpring.ioで作成されています

問題

他のサブプロジェクトdataAccessで共通Userのサブプロジェクトのクラスを使用しようとしていますインポートはIntellijで正常に機能します。しかし、見つからないためにタスクを実行すると失敗しますgradlew :dataAccess:compileJavaUser

タスク:dataAccess:compileJava FAILED ... \ dataAccess \ src \ main \ java \ ch \ wprogLK \ MyProject \ backend \ dataAccess \ MyProjectDataApplication.java:23:エラー:シンボルが見つかりませんUser u = new User(); ^記号:クラスユーザーの場所:クラスMyProjectDataApplication)

一般的なプロジェクトでは、前にコンパイルさDATAACCESSのプロジェクト。dataAccessプロジェクトがコンパイル時に共通プロジェクトについて何も知らないのはgradle構成の問題だと思います(おそらくクラスパスの問題でしょうか?)。手伝ってくれて嬉しいです。ありがとう。

プロジェクトのセットアップ

  • 私のプロジェクト
    • 一般
      • src / main / java / ch / wprogLK / myProject / backend / common / entities
        • User.java
      • build.gradle
      • settings.gradle
    • データアクセス
      • src / main / java / ch / wprogLK / myProject / backend / dataAccess
        • AcLuDataApplication.java
      • build.gradle
      • settings.gradle
    • build.gradle
    • settings.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
    }
}
Jonathan JOhx:

それがcommonライブラリであることを示すために2つの構成を設定することはありませんしたがって、次の設定を追加してcompilerunプロジェクトのルートから。

common build.gradle

bootJar {
    enabled = false
}

jar {
    enabled = true
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ