问题标签 [source-sets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
166 浏览

gradle - Gradle + Spring Boot - 我如何在“test”sourceSet中的测试中读取“itest”sourceSet中的资源

我有 sourceSet itesttest并且main在保存级别。

testsourceSet 的测试中,我想读取itest/resources. 那可能吗?

0 投票
1 回答
312 浏览

android - 带有 awsconfiguration.json 的源集

我正在使用 AWS Amplify 并且有两个要在其之间切换的环境,因此我有两个awsconfiguration.json文件,但需要一种在运行时在两者之间切换的方法。我听说您可以使用 sourceSets,但不知道如何使用。我尝试了以下方法,但没有成功。我相信我必须设置一个productFlavor和/或buildType

0 投票
1 回答
1225 浏览

java - Gradle 在其他源集中找不到测试

我的目标是为集成测试建立一个源集。我创建了一个名为“intTest”的源集。我在里面放了一个简单的测试:

当我尝试运行它时,我收到以下错误:

FAILURE:构建失败并出现异常。
* 出了什么问题:
任务 ':integrationTest' 执行失败。
> 未找到给定包括的测试:[com.github.frozensync.Application](filter.includeTestsMatching)
* 尝试:
使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。
* 在https://help.gradle.org
获得更多帮助 BUILD FAILED in 0ms

这是我的项目结构:
项目结构

这是我的build.gradle

我遵循了Gradle 的指南。当我遇到这个问题时,我尝试了以下方法:
- 运行./gradlew cleanIntegrationTest integrationTest绕过 IntelliJ,但它仍然运行 0 个测试
- 添加想法 Gradle 插件
-dependsOn这里添加。
- 从这个解决方案。

如何使 Gradle 能够发现源集“intTest”中的测试?

0 投票
0 回答
143 浏览

gradle - 如何通过通配符模式将目录添加到 Gradle 源集?

我想将各种源类型分成每个模块区域,而不需要:

  1. 为每个或添加单独的 Android 模块项目(或 build.gradle)
  2. 将每个模块的源目录显式添加到构建中的适当源集

因此,例如,我真正想做的是:

并将modules/A/assets,modules/B/assets等自动添加到资产目录列表中。但不幸的是,这不起作用,也不清楚如何从通配符模式生成/迭代一组目录。

0 投票
0 回答
119 浏览

java - 如何设置具有共享相互依赖关系的 gradle Java 项目?

我有一个由以下部分组成的 Java 项目:

  • 一个Java库
    • 生产代码
    • 该库的集成测试
  • 使用该库的演示 Java 应用程序

集成测试和演示应用程序共享一些代码,因为在演示应用程序中可以选择和运行示例,所有这些示例也由集成测试执行。因此代码有以下四个部分:

  • 图书馆生产代码
  • 库集成测试
  • 演示应用程序
  • 示例代码

对我来说很明显(如果我错了,请纠正我)库生产代码和库集成测试应该是单独的源集,但在同一个模块中(=相同的 Gradle 子项目)。

由于演示应用程序使用与库不同的 Gradle 插件(java+ applicationvs. java-library),因此我将其设为单独的模块(= 单独的 Gradle 子项目)。

代码部分相互之间具有以下依赖关系:

  • 演示应用程序调用示例代码和直接一些库生产代码
  • 集成测试调用示例代码并直接调用一些库生产代码
  • 示例调用库生产代码

为了避免循环依赖,我没有示例作为单独的模块(Gradle 子项目),而是在库模块中设置了另一个源。

因此我的项目具有以下结构:

...与以下内容my-multi-module-project/settings.gradle

这个项目结构对这个项目有意义吗,还是我应该改变它?

应该如何设置源集之间的依赖关系,这些依赖关系尚未由使用的插件的默认值处理?

我已经尝试exampleOutput在库模块中使用自定义配置:

内容my-multi-module-project/build.gradle

内容my-multi-module-project/demo-application/build.gradle

内容my-multi-module-project/my-library/build.gradle

这适用于./gradlew runand ./gradlew test

但现在我需要一个生产安装,不能使用 Gradle。所以我跑

然后尝试运行

我从代码部分得到了一个java.lang.NoClassDefFoundError关于类的信息,实际上,在 中,有一个用于库生产代码 ( ) 的 JAR 文件和一个用于演示应用程序 ( ) 的 JAR 文件,但没有一个用于示例。相反,有一个与源集的 Java 包结构相对应的文件夹结构,其中包含示例 Java 类的文件。exampledemo-application/build/install/demo-application/libmy-library.jardemo-application.jarexample*.class

因此,由./gradlew distZip和生成的档案./gradlew distTar同样无法使用。

如何配置我的项目,以便分发产品的安装/生产也能正常工作?

0 投票
0 回答
306 浏览

javascript - 如何添加 gradle 任务来编译额外的 SourceSet

我有一个 KotlinJS 项目使用

$buildDir/src/main/generatedKotlin-compiler-plugin 在执行任务构建时生成新的 .kt 文件(现在在文件夹中)。不幸的是,我必须再次调用 build 来编译生成的源代码因此我想添加一个任务来编译生成的源代码

我会在每次构建结束时调用该任务finalizedBy

尝试一下,我只收到以下消息:

老实说,我不知道,为什么...

0 投票
1 回答
701 浏览

android - Kotlin DSL 添加 Kotlin SourceSets 不会影响

我正在添加Kotlin SourceSets到我的项目中,但我无法KotlinProject layout.

我在 build.gradle.kts 中有什么

我在项目路径中看到的

在此处输入图像描述

而且当我运行./gradlew sourcesets任务时,我看到模块的 2 个源。

在此处输入图像描述

我用谷歌搜索但找不到有用的信息。我怎样才能有kotlin而不是java?谢谢。

0 投票
0 回答
196 浏览

gradle - 如何使测试可以访问 Kotlin 的“内部”对象?

我的项目使用多个 Gradle 源集作为其生产代码库,而不仅仅是main

  • domain
  • dal
  • rest
  • test
  • dbUnitTest

事实证明,这对于限制依赖关系和执行关注点分离非常有用。

然而,它有一个缺点:我们无法从测试类中访问具有可见性的类或方法。internal这样做的原因是 Kotlin 编译器将每个源集放在它自己的“模块”中:

我希望所有源集都使用相同的模块名称“联系人管理”,因为默认情况下主源集。

我试图用编译器选项覆盖名称-module-name

跑步后gradlew build,我得到

原因-module-name "contact-management_domain"是之前由调用 Kotlin 编译器的 Gradle 代码设置的,但显然这个选项只被接受一次。

在 Gradle 构建中,如何控制Kotlin 编译器认为是“一个模块”的内容?

到目前为止,要拆分源集的相关问题还没有令人满意的答案。test

0 投票
0 回答
465 浏览

android-studio - 从 Flutter 上的调试构建中排除资产

我的 /assets/files 文件夹中有 8000 多个名为(1.txt、2.txt、3.txt 等)的文件。但是,我的调试版本不需要所有这些。我只需要前30个。事实上,如果我将所有这些文件留在资产文件夹中,构建时间会很长。

我了解到有一个源集概念,但它仅适用于 Android Studio 上的 Java 和 Kotlin。

如何从 Flutter 的调试版本中排除那些超出的文件?

0 投票
1 回答
3844 浏览

java - Gradle SourceSet IntelliJ 与 Eclipse

当我将最初使用Eclipse构建的 gradle 项目导入IntelliJ时,我指出了一个问题。事实上,该项目是一个gradle-project,但是当我将它导入 IntelliJ 时,IDE 告诉我它删除了(一些)重复的内容根。

我得到一个气球 - 告诉我:

已删除重复的内容根

事件日志中的消息是:

hh:mm[=22:58] 检测到重复的内容根

模块 [someModuleName] 的路径 [/Users/.../someProject/someModule] 已从模块 [someModuleName.someSourceSetName] 中删除

此外还有 1 个路径被重复数据删除。有关详细信息,请参阅想法日志

一般来说,它是一个gradle-project,但我无法在 IntelliJ 中运行它。它在命令行 (./gradlew build)上使用gradle-Wrapper构建,但我想使用 IntelliJ 构建以改进使用 (recompile+reload) 和 IDE 的其他功能的使用

我有以下模块:

  • A(A是我尝试构建的模块)

  • B(B是模块,我想重用模块A的sourceSets'main'和'testutils')

模块 A - 由 3 个源集(=main、test、testutils)组成:

模块 A具有 testutils(使用“main”)、test(使用“main”和“testutils”)、main(模块的生产 java-src)的依赖项

模块 B,其中testutils模块Amain的源集在src 和tests; 中是必需的。模块 B - 使用 sourceSet 'A/src/main/java' 和 'A/src/testutils/java':

所以我的 gradle 文件是(稍微缩短):

A/build.gradle:

B/build.gradlew:

我的开发系统设置:

我已经尝试过使用来自

我将非常感谢我如何管理我的“testutils”-SourceSet 的建议,它还使用嵌入式 IntelliJ-Build 构建封闭项目:

  • 设置(=构建、执行、部署>构建工具> Gradle
    • 使用 > 'IntelliJ IDEA' 构建和运行(而不是 'Gradle')
    • 使用 > 'IntelliJ IDEA'(而不是 'Gradle')运行测试