导入gradle项目后src/main/java在Eclipse中不可见

问题描述 投票:0回答:1

我尝试将一个简单的 springboot helloworld 项目导入到 Eclipse 中。该项目将对其他项目、本地 jar 和 Web 存储库有大量依赖项,因此我在 build.gradle 中添加了一个 sourceSets 定义,以便能够在需要的地方调试和修改代码。

该项目可以使用“gradle bootRun”从命令行顺利构建和运行。

在 Eclipse 中,当我执行“导入.../Gradle /现有 Gradle 项目”时,生成的 Eclipse 包视图缺少“src/main/java”。

看起来任何引用 gradle.build 所在子目录的内容都会被 Eclipse 忽略。

Eclipse 选择第一个不是子目录的 sourceSets 引用,将其转换为“src”文件夹,并将 sourceSets 中的所有其余引用转换为源文件夹,并在引用名称后附加 -src。

我无法显示屏幕截图,但它在包资源管理器中看起来像这样:

MyProject
 >src
   [contents of FooProjectA]
 >FooProjectB-src
 >FooProjectC-src
etc etc 

我尝试了无数不同的方法,但没有任何效果。

一旦我添加了我的sourceFileSets,一切都变糟了。

看起来像所有源集

这是我的(混淆的)build.gradle,因为它是 atm。

plugins {
    id 'org.springframework.boot' version '3.3.0'
    id 'java'
    id 'eclipse'
}

apply plugin: 'io.spring.dependency-management'


group = 'com.myproject'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

compileJava.options.encoding = "ISO-8859-1"
compileJava.options.warnings = false


repositories {
    mavenCentral()
}  

sourceSets {
    main {
        java{
            srcDirs = [
            src/main/java',
            '../FooProjectA/src',
            '../FooProjectB/src', 
            '../FooProjectC/src', 
[SNIP more of the same]
            ]
        }
    }
}

configurations {
   all*.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
   all*.exclude group: 'ch.qos.logback', module: 'logback-classic'
   all*.exclude group: 'ch.qos.logback', module: 'logback-core'
}


dependencies {
    implementation files (
        '../jar_lib/libjar1.jar',
        '../jar_lib/libjar2.jar',
        '../jar_lib/libjar3.jar',
[SNIP more of the same]
    implementation 'org.springframework.boot:spring-boot-starter-web' 
    testImplementation('org.springframework.boot:spring-boot-starter-test')
    implementation 'org.springframework.boot:spring-boot-starter-web' 
    implementation 'org.apache.logging.log4j:log4j-api:2.20.0'
    implementation 'org.apache.logging.log4j:log4j-core:2.20.0'
    
}


test {
    useJUnitPlatform()
}


我有以下设置:

Eclipse 企业版 2024-09 -Spring Tools 4插件 -Buildship 3 插件

编辑

我尝试使用 IntelliJ 打开项目,它打开项目没有出现问题,并且我能够顺利运行和调试我的代码和依赖项目。

所以我的结论是我的项目 build.gradle 是正确的,但是生成 Eclipse 项目文件的 gradle eclipse 插件有错误,因此不可能在该项目中使用 Eclipse。同样,我尝试了 Visual Studio Code,虽然正确打开了项目,但编译失败,因此我无法在 VSC 中运行和调试我的代码:( :(

编辑

我的settings.gradle只有一行

rootProject.name = 'MyProject'
spring-boot eclipse gradle
1个回答
0
投票

源路径

../FooProjectA/src
../FooProjectB/src
...位于 Eclipse 项目之外,必须作为 链接文件夹包含在内。每个文件夹都分配有一个名称:

../FooProjectB/src => FooProjectB-src
../FooProjectC/src => FooProjectC-src
[...]

不幸的是,文件夹

../FooProjectA/src
被分配了名称
src

../FooProjectA/src => src

此名称与现有物理文件位置冲突

src/main/java
。作为此错误的解决方法,您可以更改
../FooProjectA/src
的指定名称。这必须在两个地方完成:

  1. 项目中链接文件夹的名称
  2. 类路径中的源路径条目

请将这些行添加到您的

build.gradle
:

eclipse {
    project {
        file {
            whenMerged {
                it.linkedResources.find { it.name = 'src' }.name = 'FooProjectA-src'
            }
        }
    }
    classpath {
        file {
            whenMerged {
                it.entries.find { it.path == 'src' }.path = 'FooProjectA-src'
            }
        }
    }
}

调用刷新 Gradle 项目后,您的源文件夹应该正确配置。

© www.soinside.com 2019 - 2024. All rights reserved.