我有一个主要由 Java 代码组成的 Gradle 构建,其中还包含一些本机代码。原生组件发布到 Ivy 存储库(Artifactory)。它们包含 DLL、LIB、头文件等。这些组件目前是使用手动过程发布的;我还没有使用 Gradle 构建 C++ 代码的解决方案。
本机组件存在于 32 位和 64 位变体中,用于发布和调试版本。到目前为止,我一直在使用诸如 release-x86、release-x64 等分类器发布它们(并将标记有所有分类器的工件放在相同的配置中)。
我无法使用分类器来声明对这些组件的依赖关系(我在这里问过这个问题:Gradle 是否支持 Ivy 存储库的分类器?但没有得到任何答案,我想我在 SSCCE 中的第一个“S”失败了)。
我发现过滤工件的唯一方法是依赖于提供例如 DLL 的配置,然后按名称过滤下载的文件以获得例如 x86 版本 DLL(因为分类器是其中的一部分),其中似乎有点杂乱无章。
我考虑过为 x86/x64、发布/调试的每种组合配置单独的配置,但感觉不是正确的解决方案。这是四个配置,只是为了封装 DLL,用于运行时依赖;对于相应的编译时依赖项(LIB、PDB 标头),我还需要四个。
有没有其他人以他们满意的方式实现了这一目标?