问题标签 [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.
gradle - Gradle + Spring Boot - 我如何在“test”sourceSet中的测试中读取“itest”sourceSet中的资源
我有 sourceSet itest
,test
并且main
在保存级别。
在test
sourceSet 的测试中,我想读取itest/resources
. 那可能吗?
android - 带有 awsconfiguration.json 的源集
我正在使用 AWS Amplify 并且有两个要在其之间切换的环境,因此我有两个awsconfiguration.json
文件,但需要一种在运行时在两者之间切换的方法。我听说您可以使用 sourceSets,但不知道如何使用。我尝试了以下方法,但没有成功。我相信我必须设置一个productFlavor
和/或buildType
?
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”中的测试?
gradle - 如何通过通配符模式将目录添加到 Gradle 源集?
我想将各种源类型分成每个模块区域,而不需要:
- 为每个或添加单独的 Android 模块项目(或 build.gradle)
- 将每个模块的源目录显式添加到构建中的适当源集
因此,例如,我真正想做的是:
并将modules/A/assets
,modules/B/assets
等自动添加到资产目录列表中。但不幸的是,这不起作用,也不清楚如何从通配符模式生成/迭代一组目录。
java - 如何设置具有共享相互依赖关系的 gradle Java 项目?
我有一个由以下部分组成的 Java 项目:
- 一个Java库
- 生产代码
- 该库的集成测试
- 使用该库的演示 Java 应用程序
集成测试和演示应用程序共享一些代码,因为在演示应用程序中可以选择和运行示例,所有这些示例也由集成测试执行。因此代码有以下四个部分:
- 图书馆生产代码
- 库集成测试
- 演示应用程序
- 示例代码
对我来说很明显(如果我错了,请纠正我)库生产代码和库集成测试应该是单独的源集,但在同一个模块中(=相同的 Gradle 子项目)。
由于演示应用程序使用与库不同的 Gradle 插件(java
+ application
vs. 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 run
and ./gradlew test
。
但现在我需要一个生产安装,不能使用 Gradle。所以我跑
然后尝试运行
我从代码部分得到了一个java.lang.NoClassDefFoundError
关于类的信息,实际上,在 中,有一个用于库生产代码 ( ) 的 JAR 文件和一个用于演示应用程序 ( ) 的 JAR 文件,但没有一个用于示例。相反,有一个与源集的 Java 包结构相对应的文件夹结构,其中包含示例 Java 类的文件。example
demo-application/build/install/demo-application/lib
my-library.jar
demo-application.jar
example
*.class
因此,由./gradlew distZip
和生成的档案./gradlew distTar
同样无法使用。
如何配置我的项目,以便分发产品的安装/生产也能正常工作?
javascript - 如何添加 gradle 任务来编译额外的 SourceSet
我有一个 KotlinJS 项目使用
$buildDir/src/main/generated
Kotlin-compiler-plugin 在执行任务构建时生成新的 .kt 文件(现在在文件夹中)。不幸的是,我必须再次调用 build 来编译生成的源代码因此我想添加一个任务来编译生成的源代码
我会在每次构建结束时调用该任务finalizedBy
尝试一下,我只收到以下消息:
老实说,我不知道,为什么...
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
android-studio - 从 Flutter 上的调试构建中排除资产
我的 /assets/files 文件夹中有 8000 多个名为(1.txt、2.txt、3.txt 等)的文件。但是,我的调试版本不需要所有这些。我只需要前30个。事实上,如果我将所有这些文件留在资产文件夹中,构建时间会很长。
我了解到有一个源集概念,但它仅适用于 Android Studio 上的 Java 和 Kotlin。
如何从 Flutter 的调试版本中排除那些超出的文件?
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')运行测试