当前位置: 首页 > 知识库问答 >
问题:

日食不识别渐变依赖关系

商弘义
2023-03-14

我对Eclipse比较陌生,我是一个IntelliJ家伙:)所以为了练习,我在Eclipse中创建了一个虚拟的Gradle项目,它甚至不能识别自动插入的JUnit依赖项。

我使用的堆栈如下:

    < li>Gradle 6.6.1 < li>Java 13 < li>Eclipse 2019-09 R (4.13.0) -

我已经做过的事情:

从这里和这里的一切,即:

>

  • 根据本指南完成能够使用Lombok的先决条件(参见下面的代码)。

    安装建造船等级。

    在我的构建.gradle 中插入以下脚本:

    应用插件:“eclipse”

    之后跑步

    Gradlew清洁日食日食

    在偏好设置中设置自动项目同步,并在该标签上使用其他选项。

    刷新依赖项并右键单击。...可能还有其他一些我记不清的事情。

    我的实际代码如下(主要是自动生成的):

    build.gradle:

    /*
     * 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'
    }
    

    图书馆:

    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());
        }
    }
    

    动物:

    package gradleproject;
    
    import lombok.Getter;
    import lombok.Setter;
    
    @Getter
    @Setter
    public class Animal {
        private String name;
        private int age;
    }
    

    构建后,JUnit和Lombok依赖项都无法识别。如果没有lombok依赖项,我的代码实际上可以编译,甚至我的测试也可以运行,但是测试类本身(和里面的代码)仍然下划线,并说它无法解析依赖项。

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

    你有什么建议吗?

    先谢谢你。

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

  • 共有2个答案

    壤驷乐邦
    2023-03-14

    最终,我可以解决这个问题。问题在于 Gradle 不知何故没有从外部存储库下载外部依赖项文件夹中引用的项目。

    我做过的事情:

      < li >更新的Gradle版本(您可能已经在编辑的问题中看到) < li >转到窗口/首选项和Gradle包装程序,而不是本地包装程序 < li >打开项目同步(也在窗口/首选项中)

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

    谢谢你的帮助。

    白光耀
    2023-03-14

    首先要注意的是,您使用的是一个有一年历史的Eclipse版本。Eclipse2020-09刚刚发布。我强烈建议首先升级到该版本,以获得最新的改进。其次,不需要安装Buildship,因为它已经包含在Eclipse中。

    在Gradle方面,也不需要包含Eclipse插件。Buildship根本不使用Eclipse插件。相反,它使用Gradle工具API。使用Buildship导入项目,然后运行< code > grad Lew clean eclipse eclipse 实际上违背了Buildship的目的,并覆盖了由Buildship填充的项目设置。

    查看构建。gradle,我可以看到以下问题:

    >

  • junit:junit:4.13测试编译测试实现作用域中定义。仅使用测试实现

    根本没有配置Lombok。虽然您在Eclipse中安装了Lombok支持,但您仍然需要在build.gradle中定义一个依赖项:

     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'
    

    记录在这里:龙目岛项目

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

  •  类似资料:
    • 问题内容: 我正在处理一个表,该表具有一个复合主键,该主键由1NF形式的两个属性(总共10个)组成。 在我的情况下,全功能的依赖项涉及依赖项, 这 依赖于我的主键中的 两个 属性。 部分依赖项依赖于主键中的任一属性。 传递依赖关系涉及功能依赖关系中的两个或多个非关键属性,其中一个非关键属性依赖于我的主键中的某个关键属性。 将可传递的依赖关系从表中拉出,似乎 在 规范化 之后 执行了此操作,但是我的

    • 一些stackoverflow帖子暗示我的类路径中有spring-asm的冲突版本。通过gradle依赖分析,我看到我没有spring-asm的多个版本,但我有spring-core的多个版本(版本3.1.4和5.0.2) 我试图排除3.1.4版本,但无法使其工作。我试图在依赖级别和配置级别都排除它。 即使有了上述更改,我仍然在依赖分析输出中发现Spring-Core:3.1.4.Release。

    • 我正在尝试将现有的web应用程序项目转换为maven。我在我的项目中手动下载了一堆JAR并保存在一个目录中。在转换为maven时,我需要这些JAR的组id和工件id的名称,以便在pom中提及。xml。 除了在mvnrepository中手动搜索每个jar名称之外,还有其他方法吗。通用域名格式?

    • 我试图从gradle构建中排除嵌套的传递依赖项。依赖结构看起来像 org.apache.beam:beam-sdks-java-core:2.33.0-自定义 我按照gradle exclude的公认解决方案排除了依赖性,但它对我不起作用。 这不排除依赖项。当我将其更改为时,依赖项仍然没有被排除。 关于如何排除这种依赖关系的任何建议?它在旧版本中拉动。

    • 我在IntelliJ IDEA中加载了一个Maven项目,当我在终端中运行“MVN clean Package”时,它工作得很好,但IntelliJ IDEA无法调试或构建它,并且在UI中,Maven项目选项卡显示了以下内容(依赖关系红线): 因与某事冲突而省略