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

gradle - 获取 SourceSet 完整路径字符串或路径目录

我想知道是否有返回 SourceSet 完整路径字符串或文件目录的属性,例如${project.projectDir}/src/${sourceSet.name}.

0 投票
1 回答
1488 浏览

android - 使用不同方法在 gradle 构建期间合并资源

正如我们所知,有两种方法可以res为每个productFlavoror设置单独的目录buildType

第一种方法是在文件夹下有单独的目录,src例如src\flavor1\ressrc\flavor2\res等等。

第二种方法是指定res目录下sourceSetsbuild.gradle类似

我确信资源合并将在第一种方法中发生,并且单独目录中用于风味的任何缺失资源都将从main's sourceSet.

问题是关于上面的第二种方法

资源合并是否会以与使用单独文件夹的第一种方法相同的方式发生?在这里,我将明确分配一个单独的目录。对于在指定目录中找不到的资源,它是否仍然回退到 main ?

我之所以这样问,是因为http://tools.android.com/ 上的 THIS LINK中的示例,在本文末尾,它显示'src/main/res'明确添加如下:

有没有人这样做并且知道如果我只是提供附加目录而不是主目录作为附加目录,资源合并是否仍然会发生?它会回退到缺少资源的主目录吗?

0 投票
0 回答
194 浏览

java - 使用 Gradle 源集在 dev/prod 之间交换资源目录

我有使用 Gradle 的 Java 应用程序。目前我的资源目录包含Typesafe ConfigLog4J配置文件。

根据我的应用程序是为开发还是生产构建的,这两个文件都有不同的设置。例如,我希望 Log4J 仅在生产中的 INFO 级别记录。

我无法使用环境变量来交换这些设置,我唯一的选择是通过这些资源文件来完成。

理想情况下,我希望能够在我的 Gradle 配置中拥有 2 个源集——一个用于 dev(main),一个用于 prod——并让 Gradle 为每个源集构建一个 jar。main 源集将继续使用 src/main/resources 作为资源目录,prod 源集将使用 src/main/resources-prod 作为资源目录。

我对这些资源目录在其他位置很好——上面只是一个例子。

现在,我的 Gradle 配置的唯一自定义部分如下(除了添加编译依赖项):

有谁知道如何实现这一目标?

0 投票
1 回答
4163 浏览

android - 在 Android Gradle 任务中获取已编译的 .class 输出目录

我正在为我的 Android 项目创建一个 Gradle 任务,该任务需要知道已编译.class文件的路径。我怎样才能得到这条路?我找到了可以给我这条路径的建议(herehere;另请参阅Gradle docsSourceSetsourceSets.main.output.classDir,但是当我尝试使用它时,我得到了错误

'output'在源集上找不到属性main

即使我使用以下内容创建了一个新的最小项目,也会发生这种情况build.gradle

这个最小的项目构建良好,但如果我运行任务会给出该错误printClassesDir。如何.class在我的任务中获取文件输出目录?


我也尝试过从<build variant>.javaCompile.classpath这个答案到另一个问题的建议。我能够访问这个属性

但是这个文件集合是空的。


作为参考,以下是我的最小项目的其他文件:

src/main/AndroidManifest.xml

src/main/java/a/b/Main.java

0 投票
2 回答
645 浏览

gradle - 从已编译的源集中过滤类文件以添加到 Gradle/Groovy 的 JAR 中

我正在尝试将Project1中已编译的.class文件包含到Project2的 jar 中,因为我的项目结构需要它来完成。为此,在Project2的build.gradle中,我写道:

哪个成功地完成了我必须做的事情。但是,我现在想过滤一些基于路径和/或某种模式添加的类。例如,要仅包含委托文件,我尝试了以下操作:

但不幸的是,它不起作用。有没有办法在 Gradle/Groovy 中实现这一点?

0 投票
1 回答
15 浏览

intellij-idea - 这有什么问题导致我的集成测试被标记为源而不是测试源?

这在命令行中可以正常工作,但 IntelliJ 将 integrationTest 源显示为好像它们是源而不是测试源一样。

摇篮代码:

0 投票
1 回答
3639 浏览

gradle - Gradle 错误:无法推断 Groovy 类路径:用于集成测试的自定义源集

运行自定义任务“integTest”时出现此错误,已在 Gradle 2.4 和 3.0 上尝试过。对于 gradle 来说还是相当新的,可能是显而易见的。

FAILURE:构建失败并出现异常。

什么地方出了错:

无法推断 Groovy 类路径,因为在类路径上找不到 Groovy Jar:文件集合

集成测试都单独运行良好,只是我不能全部运行它们,因为这个任务似乎没有得到正确的类路径。

任何见解将不胜感激。

下面是相关配置:

更新:添加依赖项。

0 投票
1 回答
2996 浏览

gradle - 多项目上的 gradle sourceSets

我的 gradle 多项目布局是这样的:

project1 和 project2 在 build.gradle 中配置(在 rootProject 中)。
我想将 project1 和 project2 testClassDir更改为sanity

我的build.gradle是这样的:

我已经关注了这个博客,我试图理解为什么配置在多项目上不起​​作用。

0 投票
0 回答
237 浏览

java - Gradle leaks sourceSet from java rootProject to non-java subProjects

Imagine you have simple multi-project build with one root project and one subproject:

settings.gradle:

root/build.gradle:

sub/build.gradle:

then the sourceSet setting leaks from the rootProject into the sub project even though it does not specify the java or java-base plugins.

I've run into an issue with one custom plugin that is reading the project's sourceSets. When it is applied on the sub project that does not have the java plugin applied it basically reads sourceSet of the rootProject where in fact it should have failed with an error because of missing sourceSet due to not having the java plugin applied. I know that this is happening mainly because of poorly written custom plugin, but I think this might cause some unwanted surprises in some cases.

Is this "leakage behavior" of the java plugin intentional?

I know this is poorly written question, but SO is the place no.1 to visit when solving issues with gradle.

0 投票
1 回答
225 浏览

java - 从 gradle 中的 jar 中省略类文件

我正在编写一个修改类文件的 gradle 插件。我希望任务在所有生成的类文件上运行并替换它们。这是我到目前为止所拥有的:

和我的构建脚本

现在的问题是,在编译的 jar 中,该类存在两次。我如何告诉 gradle 不要将类包含在默认类目录中?


或者,我可以告诉 gradle 将类编译到不同的目录并将我的类放在默认位置吗?