Eclipse无法识别Gradle依赖项

时间:2020-09-25 01:27:37

标签: java eclipse gradle build.gradle java-13

我对Eclipse相对较新,我是IntelliJ家伙:)因此,为了实践,我在Eclipse中创建了一个虚拟Gradle项目,它甚至无法识别自动插入的JUnit依赖项。

我正在使用的堆栈如下:

  • 6.6.1级
  • Java 13
  • Eclipse 2019-09 R(4.13.0)-> 已更新为2020-09(4.17.0)

我已经做过的事情:

herehere中的所有内容,即:

  1. 按照this指南进行操作才能使用Lombok(请参见下面的代码)。

  2. 安装Buildship Gradle。

  3. 在我的build.gradle中插入以下脚本:

    应用插件:“ eclipse”

    然后运行

    gradlew cleanEclipse月食

  4. 在“首选项”中设置自动项目同步,并在该选项卡上使用其他选项。

  5. 刷新依赖关系并单击鼠标右键。 ...以及其他一些我无法正确回忆的事情。

我的实际代码如下(大部分是自动生成的):

build.gradle:

long double

库:

/*
 * This file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java Library project to get you started.
 * For more details take a look at the Java Libraries chapter in the Gradle
 * User Manual available at https://docs.gradle.org/6.3/userguide/java_library_plugin.html
 */

plugins {
    // Apply the java-library plugin to add support for Java Library
    id 'java-library'
    id "io.freefair.lombok" version "5.2.1"
}

repositories {
    // Use jcenter for resolving dependencies.
    // You can declare any Maven/Ivy/file repository here.
    jcenter()
}


dependencies {

 compileOnly 'org.projectlombok:lombok:1.18.12'
 annotationProcessor 'org.projectlombok:lombok:1.18.12'

 // only required if Lombok annotation are present in test code
 testCompileOnly 'org.projectlombok:lombok:1.18.12'
 testAnnotationProcessor 'org.projectlombok:lombok:1.18.12'
   

    // This dependency is exported to consumers, that is to say found on their compile classpath.
    api 'org.apache.commons:commons-math3:3.6.1'

    // This dependency is used internally, and not exposed to consumers on their own compile classpath.
    implementation 'com.google.guava:guava:28.2-jre'
    
    implementation 'com.google.code.gson:gson:2.8.6'
    

    // Use JUnit test framework
    testImplementation 'junit:junit:4.12'
}

LibraryTest:

package gradleproject;

public class Library {
    public boolean someLibraryMethod() {
        return true;
    }
}

动物

/*
 * This Java source file was generated by the Gradle 'init' task.
 */
package gradleproject;

import static org.junit.Assert.*;

import org.junit.Test;

public class LibraryTest {
    @Test
    public void testSomeLibraryMethod() {
        Library classUnderTest = new Library();
        assertTrue("someLibraryMethod should return 'true'", classUnderTest.someLibraryMethod());
    }
}

构建后,JUnit和Lombok依赖项都无法识别。没有lombok依赖项,我的代码实际上可以编译,甚至可以运行测试,但是测试类本身(以及内部代码)仍带有下划线,并表示无法解析依赖项。

如果我尝试其他一些库,则构建失败。

您有什么建议吗?

谢谢。

PS:我已经更新到最新版本的Eclipse,并重新创建了该项目。可悲的是,它没有解决问题。

2 个答案:

答案 0 :(得分:2)

首先要注意的是,您使用的是旧版本的Eclipse。 Eclipse SELECT [*,] celulas.sector AS geom FROM celulas ; 是最近发布的。我强烈建议先升级到该版本以获得最新的改进。其次,无需安装Buildship,因为Eclipse中包含了Buildship。

在Gradle方面,也无需包含 Eclipse插件。 Buildship完全不使用 Eclipse插件。而是使用Gradle Tooling API。使用Buildship导入项目,然后运行2020-09实际上违反了Buildship的目的,并覆盖了Buildship填充的项目设置。

看看提供的gradlew cleanEclipse eclipse,我可以看到以下问题:

  1. build.gradlejunit:junit:4.13testCompile范围内定义。仅使用testImplementation

  2. Lombok根本没有配置。在Eclipse中安装Lombok支持时,仍然需要在testImplementation中定义一个依赖项:

    build.gradle

    此处记录:Project Lombok

最后一个提示:在Eclipse中,打开控制台视图,然后从视图菜单中选择 Gradle Operations 。这样,您将看到Gradle输出。如果您的构建脚本有问题,这可能会派上用场。

Gradle Operations Console View

答案 1 :(得分:1)

最终,我可以解决问题。问题是Gradle某种程度上没有从外部仓库下载外部依赖项文件夹中的引用项目。

我所做的事情:

  • 更新的Gradle版本(如您在编辑过的问题中可能看到的那样)
  • 转到窗口/首选项和Gradle包装器,而不是本地包装器
  • 打开项目同步(也在Window / Preferences中)

随后,在下一个构建过程中,Gradle下载了所有引用的jar,一切正常。

感谢您的帮助。