2014-10-16 20 views
0

我对gradle很有点新...我很久以前创建了一个Java API(现在是一个构建jar的Gradle项目),它有一些敏感部分负责解密公司数据以及一些不敏感的东西。我有一个新项目需要部分这个API,当然我不想把整个API放到其他开发人员/承包商那里。我想要做的就是创建两个变体,(为了参数,可以说“Pro”和“Lite” - 我猜想一个简单的产品线方法)。在Gradle中为编程API创建变体

是否有可能使用gradle建立两个不同的罐子?
1.一个是专业版API 2.一个是Lite API的相关类的剥离。

我在网上看到了一些“味道”,但似乎所有的点击都与Android开发和属性有关。

最坏的情况是我创建了一个只包含所需代码的新项目,但是如果我向API添加新功能/错误修复程序,我不会获得将它们合并到单个项目中的好处。

另一种方法是将现有项目组织到不同的项目中,并将安全相关的东西(包括I/O和模型)作为不同的jar包。

非常感谢任何人谁可以摆脱在这里一些轻...

回答

1

单个Gradle项目可以生成任意数量的JAR。您可以简单地添加另一个Jar任务,并给它一个独特的分类器,以将其与“标准”库区分开来。

task jarLite(type: Jar) { 
    classifier = 'lite' 
    exclude '**/SomeProprietaryCode.class' 
    with jar 
} 
+0

另一个(也许更好)的选择是利用[源集](http://www.gradle.org/docs/current/userguide/java_plugin.html#sec:source_sets) – 2014-10-16 21:55:40

+0

伟大的标志,我认为这是走的路!非常感谢! – TangibleTeeth 2014-10-17 21:06:54

1

你可以把它拆分成具有亲和精简版的版本多模块项目。在构建时,可以将pro和lite的二进制文件发布到工件存储库(nexus,artifactory等),然后您将拥有2个独立的jar。对于通用代码,你可以有第三个模块,它们之间共享东西,而lite和pro都可以依赖它。

+0

谢谢杰夫。我正在考虑这种方法,但我想知道是否有更具体的东西可以做,而不必重构的东西。似乎马克的回答与排除选项是要走的路。虽然谢谢! – TangibleTeeth 2014-10-17 21:06:33

+0

请注意,不要排除实际需要运行的类。你可以这样做,因为你在编译之后排除了类文件,所以这可能有点危险。 – 2014-10-17 22:53:16

+0

在我的情况下,有一个很好的问题分离,所以我可以排除所有特定的包,并希望罚款(API是不是很大,所以我有全面的概述)。事实上,我的'变化'变体只能使用大约10-15个班。当我下周得到一些时间时,我会试一试。 – TangibleTeeth 2014-10-17 23:04:56