使用自定义类路径在Gradle任务中运行Java类

雅罗斯瓦夫·帕拉克(Jaroslaw Pawlak)

我正在尝试将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
}

但是,这是一个大型的旧项目,具有非常长的类路径,因此当我运行时gradle downloadKeystore,会出现另一个错误:

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

所以我已经修改了我sourceSets的内容build.gradle,现在看起来像这样:

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 refresh时,通常会中断项目。看起来像这样:

IntelliJ损坏

但它看起来应该像这样:

不间断的IntelliJ

我尝试过手动设置test / src根目录,但是它实际上并没有工作,而且我不希望其他开发人员必须这样做。

我也尝试过使用类似的方法手动设置类路径:

classpath = classpath('src/test/java/com/orbitbenefits/keystore')

但是我无法使其工作(gradle不喜欢它)。

问题

我只需要解决以下两个问题之一:

如何手动定义类路径?

或者

使用gradle刷新按钮时,如何使IntelliJ不弄乱项目结构?

daemon_nio

您的IntelliJ存在问题,srcDirs = ['src/test/java/com/orbitbenefits/keystore']因为src/test/java它已经是一个包含某些源的文件夹。

一种解决方案是定义一个新文件夹,与src您的KeystoreDownloader课程所在目录同级,然后按如下所示导入密钥库:

keystore {
    java {
        srcDirs = ['keystore']
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift中的自定义类集群

来自分类Dev

自定义gradle任务类:是否有“构建后”钩子?

来自分类Dev

如何在活动类中使用自定义类(扩展了View类)以绘制路径而不更改android中主布局的其他部分

来自分类Dev

在JRuby中调用自定义Java类

来自分类Dev

SceneBuilder自定义控件类路径

来自分类Dev

HashSet <>中的自定义类

来自分类Dev

Gradle:从自定义任务访问项目类和依赖项

来自分类Dev

Gradle中的自定义任务/插件

来自分类Dev

在自定义类中扩展QFrame

来自分类Dev

需要一个gradle jar任务来正常复制类和自定义文件

来自分类Dev

如何使用Gremlin在OrientDB中创建自定义类

来自分类Dev

自定义Java套接字类

来自分类Dev

Java中自定义链接列表的custom Value类

来自分类Dev

在Java中返回自定义数据类型(类?)

来自分类Dev

在Gradle中的自定义任务中运行任务

来自分类Dev

在自定义类中删除UITableViewCell

来自分类Dev

在Laravel 5中使用自定义类

来自分类Dev

在自定义任务中执行Gradle构建任务

来自分类Dev

gradle自定义任务类使其无法编译

来自分类Dev

Java自定义异常中的超类构造函数

来自分类Dev

如何在Java中创建自定义JButton类?

来自分类Dev

使用异常或自定义类在Java中的两层之间进行通信的最佳方法

来自分类Dev

如何在buildSrc中的自定义JavaExec任务类中设置Project.configurations属性?

来自分类Dev

SceneBuilder自定义控件类路径

来自分类Dev

自定义BitString类中的Java方法

来自分类Dev

Gradle中的自定义任务/插件

来自分类Dev

使用ArrayLists的自定义类中的toString方法

来自分类Dev

自定义Java类与Maps的速度

来自分类Dev

Gradle 在运行任务时设置了错误的(意外的?)类路径

Related 相关文章

热门标签

归档