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

java-test-fixtures插件是否与使用IntelliJ IDEA设置构建和运行不兼容?

贺英悟
2023-03-14

看起来,如果我在java Gradle项目中使用java-test-fixtures插件,当IntelliJ导入它时,IDE将始终将src/testfixturedir标记为源代码文件夹(可见于Module Settings、Sources选项卡)。

然而,我在build.gradle中添加到TestFixturesAPITestFixtureSimplementation配置的任何依赖项都将导入IDEA项目,范围为Test(在模块设置dependencies选项卡中可见)。

因此,当我使用intellij idea的设置而不是Gradle的默认设置(在settings->build,Execution,deployment->build tools->Gradle中可见)来构建我的项目时,构建器无法从那些TestFixture配置中找到deps,我得到了一堆包不存在的错误。

使用gradle init向导设置一个新的java-library项目并将'java-test-fixture'插件添加到该项目中,然后将dep添加到其中一个测试fixture配置并将其导入到测试fixture SourceSet中的java文件中,然后切换构建和运行设置并单击构建,这样就可以很容易地重现这种行为。

我使用的是Gradle6.0和Intellij2019.3测试版。

我尝试显式地将testFixtures源目录标记为测试源文件夹:

idea {
    module {
        testSourceDirs += project.sourceSets.testFixtures.allJava.srcDirs
    }
}

有什么方法可以让java-test-fixtures插件在不将我的deps从TestFixtureSAPI配置泄露到API配置中的情况下很好地使用IDEA builder吗?

更新

因此,我的团队在IntelliJ注册表中启用了“gradle.settings.ShowdePrecatedSettings”选项,目前没有使用推荐的“module per sourceset”选项--相反,我们每个项目都有一个模块。此问题仅适用于每个项目的模块,这是不推荐的。参见:https://youtrack.jetbrains.com/issue/idea-222172

共有1个答案

白镜
2023-03-14

所以我找到了一个解决办法:

添加新配置:

configurations {
  ideaTestFixturesApi
}

使现有的testFixturesApi配置扩展您的新配置:

configurations.testFixturesApi.extendsFrom(ideaTestFixturesApi)
plugins {
   id 'idea'
}

// ...

idea {
    module {
       scopes.COMPILE.plus += [configurations.ideaTestFixturesApi]
    }
}

然后,当您通过Gradle视图刷新项目时,您将看到每个dep标记为compile范围,这应该允许IntelliJ构建成功。您可以对TestFixtureSimplementation执行相同的操作。

不太理想,但由于似乎没有任何方法强制TestFixture源集显示为测试源目录,这是我现在要采用的解决方案。

 类似资料:
  • 我只是试图释放我的Java9兼容的项目与。但是,它在中失败 无法执行目标组织。阿帕奇。专家插件:maven编译器插件:3.7.0:在项目电子邮件上编译(默认编译):致命错误编译:无效目标版本:9 有趣的是,在我独立运行时运行良好。我的设置: Maven版本3.5.0。 运行良好; 失败与上述异常。 调试输出:

  • 根据这个答案和这个答案,我已经在应用程序gradle中进行了更改,但它仍然显示我在构建应用程序时跟踪错误。 我在这里错过了什么? 这是我的应用程序Gradle 我使用的是Android Studio3.0,渐变版本是3.0

  • 问题内容: 我有一个用于Java和Android项目的通用库,它需要base64编码器/解码器。问题是,Apache commons库无法与Android一起使用,至少不能成功实现-由于Android已经实现且版本更早,因此每当我尝试编码或解码时,都会在运行时导致错误: 返回错误: 如果有人知道同时兼容Java和Android的base64库,或者可以向我解释如何解决Apache Commons问

  • 问题内容: 如果您在基于Linux的平台上用C编译程序,然后将其移植为使用MacOS库,它将起作用吗? 来自编译器的核心机器代码是否在Mac和Linux上都兼容? 我之所以这样问,是因为两者都是基于“ UNIX”的,所以我认为这是真的,但是我不确定。 问题答案: 否,Linux和Mac OS X二进制文件不是交叉兼容的。 一方面,Linux可执行文件使用一种称为ELF的格式。 Mac OS X可执

  • 我希望调试版本和发布版本有不同的配置。在大多数情况下,配置指的是具有不同的字符串常量, e、 g.连接字符串。此外,我希望有一个运行配置连接到构建配置,这样当我从运行下拉列表中选择“release”时,就会自动构建正确的版本。这可能吗?有没有办法根据构建配置使用不同的字符串资源文件?

  • 我正在使用Spark Version2.3使用编写和保存数据。 表在配置单元中创建,但没有使用正确的模式。我无法从配置单元表中选择任何数据。 如何将数据记录保存并写入可稍后查看的配置单元表?

  • 问题内容: 我正在尝试用一个使用Jenkins管道插件并从项目存储库加载a的新任务替换当前使用旧式Jenkins作业被黑客入侵的当前构建管道。 遗留作业所做的一件事是使用Description setter插件将构建说明设置为包含Mercurial哈希,用户名和当前版本,以便轻松查找构建。 有没有办法用Jenkins管道插件复制/模拟这种行为? 问题答案: 只是想通了。管道作业公开具有可写属性的全

  • 现在我看到了Intellij Idea更新窗口中的概念: 发现与新版本不兼容的插件:Lombok插件 有没有办法解决这个问题,或者我应该等到龙目岛插件团队解决了兼容性问题?