问题标签 [gradle-2]
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 - Pass command line arguments to gradle
To start Java program, I can pass arguments like:
What are the good ways to do that in gradle command line:
And this is in build.gradle:
ant - 在运行相关任务之前检查输入
我有一个 Ant 构建脚本,我需要编译我的项目的一部分(它链接到我们使用的 JavaScript 库的第三方构建系统)。
我想围绕这个包装 Gradle,所以我已经导入了 Ant 构建,我可以通过 Gradle 成功调用 Ant 目标。我什至为目标添加了输入和输出检查,这样它们就不会在不需要时运行
Ant 目标具有它们所做的设置工作 - 主要是导入配置和设置。他们通过对目标的依赖来做到这一点init
,这需要大约 4-5 秒才能运行。如果主任务的输入得到满足,我想做的是阻止该 init 目标运行。
有什么建议么?
示例 Ant 构建脚本 ( build.xml
):
与之配套的示例 Gradle 脚本 ( build.gradle
):
理想情况下,当我运行时,如果是最新的gradle build
,我不想运行。init
build
有什么建议么?
maven - 如何使用提供的范围发布 Gradle 项目 JAR
给定一个将作为 JAR 发布的 Gradle Web 项目(以便它可以成为另一个具有不同发布周期的 Gradle Web 项目的依赖项)。
该maven-publish
插件使用:
Web 项目有一个providedCompile
依赖项:
Ajar
发布使用mavenJava
:
问题是在生成的 Maven POM中javax.servlet-api
有一个范围:runtime
运行时范围对 servlet-api 没有意义,甚至是有害的。如何provided
在 pom.xml 中设置范围?
java - 如何在 gradle 2.1 中将源集添加到 Java 项目?
如何在 gradle 2.1 中将源集添加到 Java 项目?
我已经阅读了有关Java Plugin和SourceSetOutput以及其他一些 SO 线程的文档,但我仍在努力弄清楚它是如何工作的。
我创建了一个简单的构建脚本来测试我的理解。根据用户指南的第 23.7.2 节,示例 23.5,看来我可以通过执行以下操作创建一个 sourceSet:
在第 23.4 节中。项目布局似乎暗示了我需要做的所有事情,因为我的源集遵循 gradle 约定。要包含在源集中的代码位于src/generated/java/packagename
. 并将自动添加到类路径中。根据我从使用生成源集中定义的代码的代码中得到的符号未找到错误,我认为这是不正确的,需要做其他事情。我需要做什么?
这是我的设置:
构建.gradle
文件结构
Boom.java
测试.java
gradle - Gradle 测试任务 testReport 任务 - Gradle 2.3 / Java7 或 Java8 不推荐使用的属性
我正在尝试将我的项目从 java7 更改为 java8。因此,我对用于 gradle 1.6 的现有 gradle extra.commons-myp.gradle 脚本进行了更改。
我将 complie 更改为 JavaCompile,因为它在 2.0 之后已被弃用。我在测试任务中遇到错误,
请告诉我我错过了什么。. .
对于这些属性中的任何一个,您收到的错误类似于以下内容:
unit-testing - Gradle 测试任务 - Gradle 1.6 和 Gradle 2.3 或更高版本
我有一个 Java 项目。
PS :在我的项目中,我在src/test/java中没有任何 java 程序/源代码。
- 此文件夹仅包含一个空白.txt 文件。
我有两个不同的 Gradle 版本:
Gradle 1.6 与 Java 7(因为 Java 8 与 Gradle 1.6 或任何版本不兼容,如果我是正确的,则小于 1.10 版本)。
另一个版本是:带有 Java 8 的 Gradle 2.3。
使用上述两个 Gradle 1.6 + Java7 或Gradle 2.3 + Java 8 版本我的项目构建成功。
不过,我注意到一件事:在运行构建时,它会自动调用“测试”任务(根据 Gradle 设计,测试任务是免费运行的);我在 Gradle 1.6 + Java7 运行期间发现 --- 我看到以下输出。
正如您会注意到的,它说我没有任何测试源代码(即 src/test/java 不包含任何源代码,或者这次Gradle 没有什么新东西可以编译可能自上次 gradle 运行以来没有任何变化构建),这就是为什么 compileTestJava 任务在它前面显示UP-TO-DATE的原因。
但是,:test任务显示它运行成功。我在 test { .. } 任务中使用了 jacoco (代码覆盖率)部分,然后它实际上运行了该部分(因为在test任务前面没有 UP-TO-DATE )。Jacoco 部分未在我的项目的 build.gradle 中定义,但实际上它来自顶级 / GRADLE_HOME/init.d/some-common-top-level.gradle 文件(其中 test { ... has jacoco { ... } .. } 部分)。
正如我上面提到的,测试任务没有说 UP-TO-DATE,因此,在 Gradle 构建过程完成后,我可以看到它在build/tmp/expandedArchives/org.jacoco 中创建了以下文件夹/文件结构... .文件夹:
当我运行 Gradle 2.3 和 Java8 时,同样的情况不会发生。
构建成功,但我没有得到包含 jacocoagent.jar 文件的 build/tmp/expandedArchives/org.jacoco.... 文件夹。
任何想法,为什么 Gradle 2.3 没有创建这个 jacoco 特定的 .jar 文件。
对于 Gradle 2.3+Java8,以下输出在:compileTestJava和:test任务前面显示 UP-TO-DATE (对于测试任务的 Gradle 1.6 不是这种情况)。
我跑了“ gradle clean build ”。
我需要 Gradle 2.3 在 build/tmp/expandedArchives/org.jacoco..... 文件夹下生成这个 jacocoagent.jar 以便我可以在下游 Jenkins 作业(运行非单元测试)中使用它,因为这个项目确实有一些集成测试,我在下游作业中从父主构建作业(运行gradle clean build包括测试任务)中获取 jacocoagent.jar,以便我可以在启动 Tomcat 时将其传递给 TOMCAT JVM(这样我就可以获得 jacocoIT IT 测试的 .exec 代码覆盖率)。但是,在我切换到 Gradle 2.3 之后,我没有 src/test/java 的所有项目......现在没有创建 jacocoagent.jar 并且复制工件插件在尝试从父作业复制 .jar 文件时失败.
还有一点:
使用 Gradle 1.6 + Java7,如果我运行gradle clean build,它会在 build/tmp/expandedArchives/org.jacoco..... 文件夹中成功创建 jacocoagent.jar ,但只有在我运行时才能以这种方式工作gradle clean build或“ gradle clean; gradle test ”。
如果我运行 gradle clean build,然后删除 build/tmp 文件夹,现在只运行:gradle test ,它会在:compileTestJava和:test任务前面显示我 UP-TO-DATE并且不会创建 build/tmp/ expandArchives/org.jacoco.... 包含 jacocoagent.jar 文件的文件夹。
有关更多信息,我在运行Gradle 1.6 + java 7的gradle 测试任务时附加了配置文件运行(即使用--profile选项) 。
我看到,在配置文件html文件中,当测试任务运行时,它首先根据 Gradle 流程逻辑调用 compileJava,然后是测试任务,它还调用depedencies --- :jacocoAgent(根据依赖项解析选项卡):
但是,
使用 Gradle 2.3 + Java8,依赖关系解析/顺序和任务执行步骤是不同的(或与 Gradle 1.6 相比的顺序),用于生成或显示对 jacocoAgent 依赖项的任何引用,因为它甚至没有调用它。
使用-i(或--info )选项运行Gradle1.6 +Java7 测试任务显示了即使我没有测试源代码,它也运行测试任务的原因,请参阅原因:
gradle - Gradle - 从 Artifactory 下载单个 groupID:artifactID 的所有版本 jar
我使用 Gradle 来构建一个项目(Java)。
摇篮 2.3,Java7/8。效果很好。
为了构建一个项目,我们定义了在编译、测试(testRuntime)和运行时阶段我们需要的所有库,我们在依赖项部分定义了所有这些库,例如:
对于我们的应用程序/服务运行构建/测试/IT 测试等(在运行时)所需的所有库,我们在依赖项部分中有多个此类条目。
到目前为止,Gradle 运行良好,可以从 Artifactory 下载所有工件。
我正在开发一个项目,我需要为单个 groupID:artifactID 获取所有版本的工件(依赖部分中所有可用的),即我想要以下 .jar(默认扩展名)并创建一个包含所有版本化 .jar 的 zip 文件:
我知道如何在 Gradle 中创建 .zip 文件(这很容易),但 Gradle 不会从 Artifactory 或给定的二进制存储库系统获取/下载所有 .jar(对于我上面列出的每个版本)。
它只获取最新的(即cool_service-1.2.0.jar)。Gradle 做得很好,因为这样你就不会在来自同一个项目(cool_library)的类路径中有重复的类,并且由于它的依赖项部分提到的不同版本。
有人会说,当cool_library 1.2.0 版中有最新/最好的代码时,为什么我需要旧版本,如果一个正在使用这个库的项目想要它,就说我想要my.company.com:cool_library:1.2 .0并完成它或获得您想要编译的任何单个版本。在我的例子中,开发团队编写了应用程序代码,他们在这里定义了cool_library-1.0.0.jar,但在其他地方定义了cool_library-1.2.0.jar。基本上,我需要开发人员在 build.gradle 文件中定义的所有内容。
如何创建一个 custom_zip.zip 文件,该文件将包含我在“编译”标题的依赖项部分提到的所有 cool_library-xyzjar 文件。
谢谢。
junit - 声纳单元测试报告参数 - sonar.junit.reportPath vs sonar.java.junit.reportPath
我发现我的 Sonar 实例 5.1 或 5.1.1(带有最新的 sonar-runner 2.x)停止在项目的仪表板上显示部分单元测试信息(单元测试小部件)。
我拥有的属性是(在 Gradle 的 sonarRunner > sonarProperties 部分):
要修复它,我还必须包含以下属性:
仅供参考:我所有的单元测试报告都放在build/test-results/UT文件夹下,所有集成测试结果文件都放在 unedr build/test-results/IT文件夹等。
我想知道这是由于我使用的 Gradle 版本(2.3)还是由于 SonarQube 的更高版本(4.5+),因为我同时拥有 SQ 5.1 和 5.1.1 实例。我知道 SonarQube 团队从 SonarQube 版本 4.12 开始支持多语言
从 SonarQube 4.2 开始,可以对多语言项目进行分析。
现在,它提出了一个问题。对于基于 Groovy 的项目获取相同的单元测试信息,我需要使用:
如果我的项目有 Groovy 代码而不是 java,类似的东西?
使用双引号搜索“**sonar.java.junit.reportPath ”** 显示在 Google 中未找到任何结果,如果我可以在不使用“双引号”的情况下再次运行搜索,它会迫使我尝试查看 google 结果(对于此属性)。
在 SonarQube 网站“搜索框”中执行相同操作显示:
没有找到sonar.java.junit.reportPath的结果。请尝试以下建议之一:
虽然在 Gradle 中,但在里面
我可以定义 sonar.junit.reportPath、sonar.java.junit.reportPath 以及类似的 sonar.surefire.reporPath 和 sonar.java.surefire.reportPath 并且在 Gradle 中运行 sonarRunner 任务时,它不会出错。因此,它让我相信属性变量是有效的。
对于基于 Java 和 Groovy 的混合项目(即 Java 中的源代码但 Groovy 中的测试),运行 sonarRunner 或独立 sonar-runner 命令也存在问题。设置sonar.language=java,grvy
没有帮助。我在 stackoverflow 上发布了这个问题,但到目前为止,我还没有完美的结果/答案来说明如何为 Groovy 项目启动和运行一个完整的声纳仪表板,就像我为 Java 项目获得的一样。
Groovy 项目 - Sonar - 发布项目和单元 + 集成测试代码覆盖率数据
PS:我尝试了各种设置声纳的值。. 变量(就声纳源、测试等属性而言,他们已在其网站的文档部分提到)
command-line - Gradle myCustomTask - 如何通过传递命令行参数来避免调用依赖任务
我在 Gradle (2.3) 中有一个自定义任务
如何在 Gradle 中更改上述自定义任务代码,以便它可以在命令行中执行我正在执行的操作。我希望当有人调用 myCustomTask 并且它依赖于 Gradle 的任何核心任务(如 compileJava、类等)时,它不应该调用这些任务(即在命令行中模仿 -x someTask行为)。
以下作品!!
然后,我想要的是:运行gradle myCustomTask应该做同样的事情(上面的命令行命令正在做什么)。
错误:
cat -n在 extra1..gradle 文件(init.d 级别文件)上: