问题标签 [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 回答
334 浏览

testing - 如何在 Rust 中的测试和工作台之间共享代码?

我开始在 Rust 中使用“bench”和 Rust nightly 编写基准测试,如文档中所写。

为了在测试和基准测试之间共享代码,我添加Option<&mut Bencher>了直接运行代码块或通过 bencher 运行代码块(“src/lib.rs”):

现在我想使用 Rust stable进行基准测试。由于“bencher”板条箱3 年没有更新, “criterion”板条箱似乎是默认选项。为此,我必须将代码移动到“./benches/my_benchmark.rs”。

我怎样才能block_requests(..)在测试和基准测试之间共享?

0 投票
2 回答
379 浏览

android-studio - Android Studio 多平台项目的 commonMain 中的 ktor 依赖项在 IDE 中未解决,但代码运行

在将 ktor 依赖项用于带有 kotlin 多平台的 commonMain 源集时,我遇到了 Android Studio IDE 的问题。问题是 IDE 无法识别这种依赖关系,但程序编译并运行良好。此外,在 androidMain 源集中,依赖项被识别。我见过其他关于类似问题的问题,但我还没有看到任何人在程序编译和运行时遇到这个问题。

Gradle 依赖项

以下是项目共享文件夹中的build.gradle.kts。

其中的点表示其他源集的依赖关系,例如 iosMain 是空的。

在 commonMain 代码中,我有一个类 KtorTest:

主要活动

在主要活动中,我导入并使用 KtorTest 类来执行获取请求。

结果

该程序构建并运行并打印出以下内容。

Android Studio 截图:

第一个屏幕截图是上面介绍的 KtorTest。

KtorTest in common Android Studio kotlin 多平台项目中共享代码的主要内容

第二张截图是类KtorTest2,除了位于多平台项目中共享文件夹的androidMain文件夹中外,与上面的KtorTest完全一样。

Android Studio kotlin 多平台项目中共享代码的 androidMain 中的 KtorTest2

在这些图像中,您可以看到 IDE 在 commonMain 中抱怨 ktor,但在 androidMain 中没有。

0 投票
1 回答
61 浏览

java - Gradle 将哪些文件打包到 jar 存档中?

什么表达式(在build.gradle文件中)评估为默认打包到 jar 存档中的文件列表(不调整“jar”任务?

我不能轻易地在org.gradle.jvm.tasks.Jar和的来源中发现它org.gradle.api.tasks.bundling.Jar

这个问题的动机是使用未添加到 jar 存档的自定义 sourceSet 文件。

0 投票
0 回答
22 浏览

gradle - 如何从 SourceSets 中排除具体文件

我想从 sourceSets 中排除具体文件,但我的代码不起作用:

2个 println() 方法后的结果:

怎么了?

0 投票
1 回答
48 浏览

gradle - Kotlin Gradle DSL cpp-library 源通配符

Gradle 提供了一个可以编译 cpp-library 的插件

构建.gradle.kts

我的输出低于

如何使用source.from指定自定义文件扩展名,如*.txt

0 投票
0 回答
103 浏览

android - 声明 res.srcDirs 会破坏 Android Studio 对资源文件的更改检测

我们的 Android 客户端中有多个构建变体。我们刚刚开始通过自定义源集跨构建变体共享源代码和资源。这就是他们的样子:

问题是,由于引入了这种模式,Android Studio 不尊重我们对以下文件所做的更改src/main/res

这意味着,我可以进入我的 Activity 的 XML 文件之一,更改用户显示的字符串,部署到我的设备,并且没有任何更改。Android Studio 可以毫无问题地显示我对 XML 所做更改的预览。我什至可以通过删除代码库引用的多个元素来完全使 XML 无效;它部署时没有任何警告或编译错误。

但是,对资源文件所做的更改src/nonproduction/res 反映在构建/部署中。

--

我试图解决这个问题:

  1. 如果 APK 未更改,则关闭并行运行/跳过安装。
  2. 清理和/或重建
  3. 删除 .gradle 文件夹
  4. 无效的缓存/重新启动

这些都不能始终如一地解决问题。为了解决它,我必须更改构建变体,希望它有效,如果不重复尝试上述方法,直到我在构建后真正看到更改。这至少可以说是非常辛苦的。

通过删除res.srcDirs = ['src/main/res', 'src/nonproduction/res']问题立即解决,我的所有更改立即生效,但随后我失去了源集的价值。

有趣的是,即使只是指定res.srcDirs = ['src/main/res']也足以对我造成这个问题。我不必声明任何自定义资源目录,以便在构建/部署期间始终识别我的资源更改。

由于我无法共享整个项目,因此我创建了一个示例应用程序,该应用程序可以为我最小限度地重现该问题。

https://github.com/scb5304/resourcechangetest

这是源集的已知缺点还是我的配置有问题?感谢这里的任何指导。

0 投票
1 回答
196 浏览

android - 如何在 android gradle.kts 中定义自定义源集?

我想在三个商店发布我的应用程序。我的应用程序中有汇率部分和更新对话框(其中有一个按钮可以转到商店以更新应用程序)。为了管理这些功能,我决定将三种风格和三种来源设置为在不同的 kotlin 文件中具有不同的速率和更新部分实现。这是我的 Gradle 文件:

我想为每种风味添加一个包含两个文件(updateStore.kt 和 rate.kt)的目录到 src。我的意思是我有三个具有三个不同名称的目录,每个目录都包含具有不同实现的 updateStore.kt 和 rate.kt。

当我构建我的项目时,我收到了这个错误:

The SourceSet 'p1SourceSet' is not recognized by the Android Gradle Plugin. Perhaps you misspelled something?

我应该怎么办?

0 投票
1 回答
44 浏览

gradle - 将插件中的 SourceSet 定义从 Groovy DSL 转换为 Kotlin DSL

我的 Gradle 插件中有一个方法,它声明了一个新的“scratch”源集。我正在尝试将此方法从 Groovy 转换为 Kotlin,但我无法弄清楚我打算如何SourceSet使用 Kotlin 声明新方法。

在转换后的scratchConfiguration方法中,所有这些似乎都是未解析的引用:

  • sourceSets
  • project.sourceSets
  • java.sourceSets

那么新的 SourceSet 声明应该是什么样的呢?

0 投票
1 回答
65 浏览

android - 为android中的每种风格替换一个XML文件

我正在尝试将Braze集成到我的应用程序中以进行推送通知。Braze 需要我们在其中创建一个braze.xml文件,在src/main/res/values其中添加 API 密钥和其他与 braze 相关的东西(这里是文档)。

现在我需要区分 prod 和 qa 环境,这意味着它们将有 2 个不同的 API 密钥。

我想知道如何braze.xml为不同的口味使用不同的。

我发现了这个

我想知道如何使用它来替换我的 braze.xml 以获得不同的构建变体。

0 投票
0 回答
12 浏览

java - Sonarqube 没有使用 gradle 源集

我有一个 java gradle 项目,在标准“src/test”文件夹旁边有一个自定义源集“src/integration-test”。

构建.gradle

我已经尝试了几件事,但 Sonarqube 仍然只选择“src/test”中的单元测试,而忽略了我的自定义源集中的单元测试。

版本: Gradle v7.3 Sonarqube v3.3 Java 17

我究竟做错了什么?

谢谢。