标签: javaexec-gradle-plugin

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社区版2018.1.5 \ jre64 \ lib \ security \ cacerts”中,但是在IntelliJ中运行它时,我仍然收到此错误消息。

task(runMain, dependsOn: 'classes', type: JavaExec) {
     main = 'com.xxx.xx.x.Utopia'
     classpath = sourceSets.main.runtimeClasspath
     args=[
             "-Djavax.net.ssl.trustStore=C:\\ProgramFiles\\Java\\jre1.8.0_121\\lib\\security\\cacerts"
     ]
 }
Run Code Online (Sandbox Code Playgroud)

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

任何帮助将不胜感激。

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

java intellij-idea gradle javaexec-gradle-plugin

3
推荐指数
1
解决办法
3768
查看次数

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

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

子项目foo:

dependencies {
    runtimeOnly files('libs/hello.jar')
}
Run Code Online (Sandbox Code Playgroud)

子项目栏:

dependencies {
    compile project(':foo')
}

task execHello(type: JavaExec, dependsOn: 'compileJava') {      
     classpath = configurations.runtime         
     main 'myPackage.Hello'
}
Run Code Online (Sandbox Code Playgroud)

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

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

classpath = configurations.runtime + configuration.runtimeOnly
Run Code Online (Sandbox Code Playgroud)

错误:runtimeOnly无法明确解决。如何在JavaExec类路径中添加hello.jar?

runtime classpath gradle javaexec-gradle-plugin

2
推荐指数
1
解决办法
8407
查看次数