是否可以在IntelliJ中为传统的Java应用程序(而不是Android项目)构建基于不同源集的变体?
我想使用Android gradle插件附带的productFlavors等功能,但只适用于传统的Java应用程序。
示例:
library_red -- HelloImpl.java
library_blue -- HelloImpl.java
library_common -- Hello.java
compiled library_blue -- Hello.class, HelloImpl.class
compiled library_red -- Hello.class, HelloImpl.class
2条答案
按热度按时间wlsrxk511#
答案是肯定的,但您必须使用新的Gradle软件模型,这是非常酝酿。这将是一个充满痛苦的道路,因为你将是一个开拓者,因为我已经学会了使用它的C/Cpp项目。以下是一般情况下,你的建设将看起来像。
参考:https://docs.gradle.org/current/userguide/java_software.html
14ifxucb2#
我们为变体系统使用Gradle多模块项目。有一个包含通用代码的核心项目。定制只需在子项目中完成。
变体子项目依赖于核心,每个子项目构建单独的.war文件。注意,在这种情况下,我们不覆盖核心项目中的类。对于代码定制,我们使用Spring,在某些情况下使用SPI,但我想任何依赖注入框架都可以实现这一点。它只是迫使您在核心中提供显式扩展点,我认为这是一件好事。