Gradle / javacard 插件是否支持在多项目 gradle 构建中构建两个小程序依赖项?

Does Gradle / javacard plugin support the build of two applets dependency in a multi-project gradle build?

gradle 机制或特别是它的 javacard 插件是否有一种表达依赖关系的方法,其中一个 *.cap 的构建取决于另一个项目的 .exp

我用谷歌搜索并发现 this PR 插件似乎尚不支持我正在寻找的功能。

目前,我的构建方式是:./gradlew proj01:convertJavacard proj02:convertJavacard。其中,我必须先指定proj01:convertJavacard,因为它产生了proj02需要的.exp文件。目前,这有效。

我问这里是因为我想做一些优雅的事情:./gradlew convertJavacard.

proj02/build.gradle 中,我尝试了以下相关部分来表达对 proj01 的依赖:

javacard {
    cap {
        dependencies {
            javacardExport files(rootDir.absolutePath + '/build/javacard/')
            compile files(rootDir.absolutePath + '/build/classes/java/main/')
            compile project(':proj01')
        }
    }
}

它没有生成 proj01 .exp 文件,因此构建依赖项失败。 compile project(':proj01') 依赖行似乎试图做类似的事情: ./gradlew proj01:assemble 因为它产生类似的输出而没有 .exp 文件。因此,proj02 构建失败。

关于如何构建的任何提示:./gradlew convertJavacard

我想我找到了一个以 gradle 方式工作的解决方案。尽管 gradle plugin 无法正确解决两个 javacard 项目之间的依赖关系,但 gradle 任务的覆盖机制允许我插入一个额外的依赖关系。

这是 proj02/build.gradle 的相关部分:

convertJavacard {
    dependsOn ":proj01:convertJavacard"
}

javacard {
    cap {
        dependencies {
            javacardExport files(rootDir.absolutePath + '/build/javacard/')
            compile files(rootDir.absolutePath + '/build/classes/java/main/')
            compile project(':proj01')
        }
    }
}

所以总而言之,javacard 插件单独无法 link 2 个 javacard 项目。 gradle 任务覆盖机制来拯救。