【问题标题】:Compile gradle with two configuration使用两种配置编译 gradle
【发布时间】:2017-11-27 12:29:13
【问题描述】:

我有一个 gradle 项目。该项目包含许多模块。 我想制作 2 个不同的可执行文件,其中某些模块已激活或未激活。 我有一个带有 module1 和 module2 的可执行文件,如下所示:

dependencies {
    compile project(':module1')
    compile project(':module2')
}

我想要一个带有 module1 和 module2 的可执行文件,以及另一个只有 module1 的可执行文件。

为了生成可执行文件,我使用了 launch4j 和 shadowjar。

我该怎么做?

谢谢

【问题讨论】:

  • 使用单个 gradle 构建命令?
  • 是的,只有一个 gradle 任务。

标签: java gradle build.gradle launch4j shadowjar


【解决方案1】:

你可以使用我的java-flavours-plugin

plugins {
    id "com.lazan.javaflavours" version "1.2"
}
javaFlavours {
    flavour 'version1'
    flavour 'version2'
}
dependencies {
    compile 'some:common-dependency:1.0'
    version1Compile project(':module1')
    version2Compile project(':module2')
}

每种风味(例如版本 1 和版本 2)都有一个 jar 任务,该 jar 可以被下游模块/任务使用。也可以参考sourceSets.version1.runtimeClasspath等。

注意:该插件支持特定于风味的 Java 源和资源。不确定您是否需要该功能。

【讨论】:

  • 同意,以前我们只会创建另一个 jar 任务,然后吐出 2 个工件。
  • 如果没有风味特定的来源/资源,那么罐子应该完全相同,只是传递依赖关系会有所不同
  • 当我添加您的代码时,我收到以下错误消息:在项目上找不到参数 [project ':module1'] 的方法 version1Compile() 我真的不明白如何创建我的任务?任务 version1Compile() { sourceSets.version1.runtimeClasspath 任务 = ['launch4j'] }
  • 看起来你的做法与我的建议完全不同。该插件已经为每种风味创建了一个编译任务。请参阅here,了解每种风格创建了哪些任务和配置。
猜你喜欢
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 2015-10-21
  • 2016-03-25
  • 2013-05-18
  • 1970-01-01
  • 2022-06-29
  • 1970-01-01
相关资源
最近更新 更多