我正在尝试运行一个Java类作为gradle任务。
我已将此添加到我的build.gradle
:
task(downloadKeystore, dependsOn: 'classes', type: JavaExec) {
main = 'com.orbitbenefits.keystore.KeystoreDownloader'
}
但是,当我在命令行gradle downloadKeystore
上运行时,它会失败并出现以下错误:
:Noa:downloadKeystoreError: Could not find or load main class com.orbitbenefits.keystore.KeystoreDownloader
因此,我在我的任务中添加了一个类路径,如问题中所述:
task(downloadKeystore, dependsOn: 'classes', type: JavaExec) {
main = 'com.orbitbenefits.keystore.KeystoreDownloader'
classpath = sourceSets.main.runtimeClasspath
}
然而,这是一个大型的遗留项目,具有非常长的类路径,所以当我运行< code > gradle download keystore 时,我得到了另一个错误:
Caused by: java.io.IOException: Cannot run program "C:\Program Files\Java\jdk1.8.0_77\bin\java.exe" (in directory "C:\Users\pawlakj\IdeaProjects\noa\Noa"): CreateProcess error=206, The filename or extension is too long
所以我在build.gradle
中html" target="_blank">修改了我的source ceSets
,现在看起来像这样:
sourceSets {
main {
java {
srcDirs(...)
}
resources {
srcDirs(...)
}
}
keystore {
java {
srcDirs = ['src/test/java/com/orbitbenefits/keystore']
}
}
test {
java {
srcDirs(...)
}
resources {
srcDirs(...)
}
}
}
...
task(downloadKeystore, dependsOn: 'classes', type: JavaExec) {
main = 'com.orbitbenefits.keystore.KeystoreDownloader'
classpath = sourceSets.keystore.runtimeClasspath
}
这适用于命令行,但是当我在IntelliJ中运行gradle刷新时,它通常会破坏项目。它看起来像这样:
但它应该是这样的:
我尝试过手动设置test/src根目录,但它并不真的工作,我也不希望其他开发人员不得不这样做。
我还尝试过使用以下方式手动设置类路径:
classpath = classpath('src/test/java/com/orbitbenefits/keystore')
但我无法让它工作(格拉德尔不喜欢它)。
问题
我只需要解决这两个问题中的一个:
如何手动定义类路径?
或
我怎样才能让IntelliJ在使用它的gradle refresh按钮时不弄乱项目结构?
您的IntelliJ遇到了srcDir=['src/test/java/com/orbit收益/keystore']
的问题,因为src/test/java
已经是一个包含一些源的文件夹。
一种解决方案可能是为src
定义一个新的文件夹兄弟,其中您有Keystore Downloader
类,然后导入keystore,如下所示:
keystore {
java {
srcDirs = ['keystore']
}
}
我试图在PySpark中运行一个自定义的HDFS阅读器类。这个类是用Java编写的,我需要从PySpark访问它,可以从shell访问,也可以使用spark-submit访问。 有人能帮忙吗?谢了。
我在一个项目中,目前构建了26个JAR(+6如果我们算上仅测试的JAR)。出于性能原因,我们希望将它们全部组合到单个可执行文件中。这是在windows机器上,具有graalvm-ce-java11-20.0.0。我们在用IntelliJ和Gradle。我现在只是想出一个命令行,在我尝试在Gradle中复制它之前,它甚至可以工作一点点。Gradle还不在图片中,因此缺少适当的标记。 我想尽了一切办法
问题内容: 因此,我可以很好地做到这一点: 如果存在。我也可以高兴地做到这一点: 如果类文件存在于jar的适当部分中。简单的东西。但是我无法为自己的生活做这样的事情: 存在的地方和存在的地方(当然不包含MyClass)。 我会感到愚蠢吗? 问题答案: 可能:) 基本上,这只是在类路径和jar文件中包括(当前目录)。
我有一个build.gradle文件,比如: 当我使用STS Gradle插件将项目导入Eclipse时,只有compile conf依赖项显示在“Gradle dependencies”类路径容器下。 是否也有可能让提供的conf被STS插件拉入?
我想写一个Gradle任务,在我所有的子项目中共享。此任务在调用它的子项目中查找所有其他类型为“GenerateMavenPom”的任务,并执行这些任务。 通过这样做,我的子项目可以定义他们想要的任何Maven发布,我可以使用“gradle GenerateMavenPomFiles”等单个任务执行gradle来创建pom.xml,而不需要知道每个子项目中的单个发布类型。为什么?因为Maven插件
但不走运,未设置自定义运行时类路径。