问题标签 [javaexec-gradle-plugin]

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 回答
2093 浏览

java - 如何使用 JavaExec 任务将 Java 代码嵌入到 Gradle 构建中

我有一个 Gradle 驱动的项目,我想向其中添加一个简单的 Java 任务。这个任务非常具体到项目,如果可以帮助我不想将它开发为一个单独的插件。所以问题是我可以在我用于我的项目的同一个 build.gradle 中定义这样的自定义任务吗?还是不可避免地需要将其打包为单独的项目(插件)并安装到本地存储库?

此外,可能需要注意的是原始项目与 Java 无关(无需构建其他 Java 代码)

PS基于以下评论:

我想添加src/main/java/SomeUsefulStuff.java到现有项目并编译该文件并将其用作自定义任务。我确实知道每次运行构建时都需要对其进行编译,但又一次 - 代码会很小。但是它会有一些外部依赖,比如 Commons IO

0 投票
1 回答
3186 浏览

gradle - 执行 shell 脚本并将其输出用作下一个 gradle 任务的输入

我正在使用 gradle 进行构建和发布,所以我的 gradle 脚本执行一个 shell 脚本。shell 脚本输出一个 ip 地址,该地址必须作为输入提供给我的下一个 gradle ssh 任务。我能够获得输出并在控制台上打印,但无法将此输出用作下一个任务的输入。

但它会导致错误“

谁能帮助我以正确的语法使用输出变量或提供一些可以帮助我的提示。

提前致谢

0 投票
1 回答
19299 浏览

gradle - Gradle 如何在 JavaExec 类路径中包含 runtimeOnly 依赖项?

Gradle 如何在 JavaExec 类路径中包含 runtimeOnly 依赖项?例如,

子项目 foo:

子项目栏:

主类 myPackage.Hello 在 libs/hello.jar 中定义,它是项目 foo 的 runtimeOnly 依赖项。

configuration.runtime 不包含 runtimeOnly 依赖项 hello.jar。如果我在项目 foo 中将 runtimeOnly 依赖项更改为 api 依赖项,它将起作用。

错误:runtimeOnly 无法显式解析。如何在 JavaExec 类路径中添加 hello.jar?

0 投票
2 回答
619 浏览

gradle - 对 Gradle JavaExec 任务应用时间限制?

我正在设置 Randoop 测试用例生成以在我的项目中运行。我通过 JavaExec 类型的 Gradle 任务实现了这一点:

--timeLimit=10 参数旨在对 Randoop 的探索阶段应用时间限制(以秒为单位),但这对我来说只是偶尔起作用。在此任务的某些执行中,Randoop 开始探索阶段,然后“冻结”——java.exe 进程消耗 0% CPU 并且没有输出发生。

是否可以对 JavaExec 任务设置时间限制以对该任务应用时间限制?

谢谢!

0 投票
1 回答
419 浏览

java - Gradle JavaExec 抱怨无法加载或找到主类

我正在编写一个简单的 Gradle 任务来在我的 build.gradle 文件中启动一个 java 应用程序。当我尝试使用--info标志运行任务时,它会输出 java 命令,如下所示:

Gradle 然后抱怨无法加载或找到主类。我知道com.hungryTux.launcher.LauncherClass该类存在于launcherLib类路径中指定的 jar 文件中,并且其中有一个main方法。确切的错误信息是Error: Could not find or load main class

更有趣的是,如果我从 Gradle 任务的输出中获取此命令并尝试直接在终端上运行它,它似乎会找到主类并正确启动应用程序。

此 Gradle 任务的工作目录是包含该build.gradle文件的项目的根目录。当我尝试手动运行命令时,我从同一目录执行此操作。

我觉得我在 JavaExec 任务的工作方式上遗漏了一些明显的东西。我已经阅读了它的文档,但没有什么真正响起。

我应该指出,虽然com.hungryTux.launcher.LauncherClass该类未指定为文件Main-ClassMETA-INF/MANIFEST.MF包含的launcherLib.jar文件。这可能是一个问题吗?如果是这样,从命令行运行时如何工作?

0 投票
4 回答
12366 浏览

java - CACERTS IntelliJ + Gradle 的问题

我目前正在代理后面运行一些 REST 调用,因此我需要遵循一些严格的流程才能使调用通过。

以前我在 Eclipse 中构建 POC,但现在我知道它可以工作,我正在尝试将它与 Gradle 一起转移到 IntelliJ(个人最喜欢的 IDEA)以实现构建自动化。

我让项目编译,导出所有依赖项等......但是当我在 IntelliJ 中运行它时,我得到一个“未找到证书错误”。然而,附带说明一下,如果我使用“java-jar MyJar.jar”执行编译的 Jar 文件(来自 gradle),它会完美运行并且不会引发 cert 错误。这里的关键是,如果我只使用 IntelliJ 之外的 gradle 任务执行 Jar,它可以工作,但如果我尝试在 IntelliJ 中构建后立即执行任务,它会失败。

作品:

  • 通过 CLI 手动执行从 Gradle 构建任务创建的 jar
  • 使用“gradle runMain”VIA CLI 执行下面的 gradle 任务

不起作用: - 在 IntelliJ 中执行构建任务并在构建任务结束时调用“runMain”

我目前的理论是,通过 java -jar 和 gradle runMain 运行它会导致 JVM 使用默认的 cacerts“/jre_xxx/libs/security/cacerts”(我已经添加了证书)但是当我在 IntelliJ 中执行 Jar对于 Gradle,它使用不同的位置。我还将证书添加到“C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.1.5\jre64\lib\security\cacerts”,但在 IntelliJ 中运行它时仍然收到此错误。

运行这个 VIA CLI 似乎可以工作,但不能使用 IntelliJ 中的 Gradle 构建任务。

任何帮助将不胜感激。

编辑:我只在 IntelliJ 中运行它时得到的错误(PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效认证路径)

0 投票
0 回答
36 浏览

java - 如何执行独立的 javaexec 任务

我有一个名为“FunctionalityMaintainer”的 gradle 项目,我正在尝试在 build.gradle 中执行两个 JavaExec 任务,但它们是独立的。以下是我的 build.gradle 的结构

如果我执行说 deleteZip 任务,使用以下命令 -

它因错误而失败,

有人可以告诉我我在做什么错吗?

0 投票
0 回答
355 浏览

java - Gradle JavaExec 任务永远不会完成

我有一个简单的数据库迁移 JavaExec 任务,它在 gitlab 的构建过程中运行 Java 类。我有许多运行相同代码的微服务。出乎意料的是,我的一项服务突然停止构建,卡在迁移步骤上。这是任务的样子:

这个类看起来像这样:

有趣的是,这是输出:

主类完成,最后一行打印完成,但我从来没有得到“dbMigrate 完成”日志并且构建永远挂起。

更新System.exit(0):在我的主要方法末尾添加显式似乎可以解决问题。为什么仅在这种情况下就需要这样做?

0 投票
1 回答
248 浏览

gradle - 在 gradle 中,javaexec 和 JavaExec 任务之间有什么区别?

例如,我可以有一个 JavaExec 任务:

或者,在通用任务中:

我还没有弄清楚如何在第二种情况下(javaExecCaseB)指定JavaLanguageVersion。更大的问题是,有什么区别?

我尝试了各种方法在 javaExecCaseB 中设置版本,但最终出现如下错误:

0 投票
0 回答
59 浏览

android - 在 JavaExec gradle 任务中使用 Android 模块运行时类路径

我有一个包含 Gradle JavaExec 任务的 Android 模块。运行 JavaExec 任务时,我希望它使用模块的类路径。JavaExec 任务执行一个 Kotlin 主函数,该函数使用一些 3rd 方库 (kotlinpoet)。java.lang.ClassNotFoundException但是在运行 Gradle 任务时,由于 kotlinpoet 库未包含在类路径中,我得到了一个。

我在 StackOverflow 中发现了类似的问题,并为 中的classpath参数尝试了许多变体myTask,但没有任何效果。

这是build.gradle文件: