编译具有不同java源兼容性的项目

2023-12-19

我有一个包含 3 个不同项目的多项目配置。

其中 2 个项目依赖于第三个项目,我将其命名为“核心”。 根据项目的不同,“core”必须编译为 jar,分别与 1.4 和 1.6 兼容,输出为 core-1.4.jar 和 core-1.6.jar。

是否可以使用单个 build.gradle 来完成此操作,或者最好的方法是什么?如何在这两个项目的依赖项中特别指定哪个 jar?


这个问题从根本上讲是关于如何生成和使用基于相同 Java 代码的工件的两个变体。假设您确实需要生成两个仅在目标兼容性上有所不同的 Jars(这是我首先要问的),实现此目的的一种方法是使用 Java 插件main源集(以及随之而来的任务)来生成第一个变体,以及一个新的源集来生成第二个变体。此外,第二个变体需要通过其自己的配置发布,以便相关项目可以引用它。这可能如下所示:

核心/构建.gradle:

apply plugin: "java"

sourceCompatibility = 1.4

sourceSets {
    main1_4 {
        def main = sourceSets.main
        java.srcDirs = main.java.srcDirs
        resources.srcDirs = main.resources.srcDirs
        compileClasspath = main.compileClasspath
        runtimeClasspath = main.runtimeClasspath
    }
}

compileJava {
    targetCompatibility = 1.6
}

compileMain1_4Java {
    targetCompatibility = 1.4    
}

jar {
    archiveName = "core-1.6.jar"
}

main1_4Jar {
    archiveName = "core-1.4.jar"
}

configurations {
    archives1_4
}

artifacts {
    archives1_4 main1_4Jar
}

在依赖项目中:

dependencies {
    compile project(":core") // depend on 1.6 version
    compile project(path: ":core", configuration: "archives1_4") // depend on 1.4 version
}

所有这些都可以(但不必)在同一个构建脚本中完成。请参阅“多项目构建”章节摇篮用户指南 http://gradle.org/docs/current/userguide/userguide_single.html了解详情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译具有不同java源兼容性的项目 的相关文章

随机推荐

  • 如何在页面对象模式中使用 WebDriver / Selenium 2 加载组件?

    我很难适应 WebDriver 页面对象模式 请分享您使用页面对象模式和可加载组件的经验和方法 由于 PageObject 通常代表一个组件或一项功能 因此我首先想到应该使用它在 load 中实际执行一些操作 并查看它是否执行 isLoad
  • Java:通用函数X->Y接口

    我需要一个像这样的界面 interface Function
  • 如何在不打开摄像机的情况下录制视频?

    如何在不打开任何相机的情况下录制视频 我的要求是 当一个人遇到问题时 他的视频会被记录下来 但不是通过打开摄像头 它应该在后台工作 Thanks Use AV基础框架 http developer apple com library ios
  • 按特定字形划分字体子集

    我有一个 14MB 的 TTF 其中大部分是简体中文字符 我想通过创建一个仅包含 HTML 页面中特定字符的子集来减小大小 因此 理想情况下 我想向 Linux 程序传递一段文本 并让它根据包含的字符重新创建字体 E g magic fon
  • 为什么按值返回列表初始化对象时不调用复制构造函数?

    据我了解 当从函数按值返回对象时 会调用它们的复制构造函数 如果类具有已删除的复制构造函数 则按值返回将失败 struct X X const X delete X f return X error call to deleted cons
  • 有人看到我的港口号的正则有什么问题吗?

    我为端口号做了一条正则 在您说这是一个坏主意之前 它都会陷入更大的url正则义务 这比听起来要难得多 我的同事说这真的很糟糕 不会抓住一切 我不同意 我相信这个东西可以捕获从 0 到 65535 的所有内容没有其他的 我正在寻找对此的确认
  • 确保“重新启动”任务在其之前自动运行:测试

    是否有可能获得re start 又名重新启动 任务在运行 IntegrationTest 目标之前自动运行 it test 我以为这样就可以了 test lt lt test in IntegrationTest dependsOn reS
  • 如何在android中实现均衡器

    我必须在 android 中实现均衡器 我还发现源代码在这里 http kevinboone net android simple eq html 但我不知道 NumberOfBands 和 BandLevelRange 它们是什么 以及如
  • 临时更改 perl 系统调用中的默认 shell

    情况是这样的 在 Perl 中 我运行这个 my stat system cd somewhere source somescript bash do something else 对于我的所有用户 除了一名用户 来说 这都不是问题 但对于
  • .NET Framework 的目标版本与启动条件不匹配

    我有一个在 VS 2010 中构建的 C 项目 它通过 COM 引用 C 项目 这也是解决方案的一部分 上周五 我成功构建了一个版本 更改了一行代码 又进行了另一个构建 然后我开始收到有关 NET 的错误 项目中 NET Framework
  • 子例程中的默认参数值

    我不知道如何设置子例程的默认参数 这是我的考虑 sub hello print Hello world 如果您只需要一个参数 那么这很有效 如何为多个参数设置默认值 我本来打算这样做 sub hello my say 0 Hello my
  • 如何在 Java 中从内存中“清零”AES SecretKeySpec 密钥

    我正在使用 Java AES 加密 SecretKeySpec byte key String algorithm 生成一个Key对象 加密某些内容后 我想从内存中删除密钥 我可以删除对密钥的所有引用 但这并不能保证密钥不会浮动在内存中的某
  • 模型中默认范围内的参数

    我正在使用 Devise 来验证用户身份 我需要在所有表中显示 隐藏基于 global location id 列的数据 当前global location id的值将来自current user global location id 我尝
  • 使用 Azure BrokeredMessage 在不知道类型的情况下获取正文

    当您在 Azure 服务总线中使用中转消息时 可以通过调用 GetBody 检索消息正文 代码很简单 var msg subscription Receive MyPayload payload msg GetBody
  • 使用Spring JDBC的PreparedStatementCreator的正确方法是什么?

    据我了解 Java中PreparedStatement的使用是我们可以多次使用它 但是我在使用Spring JDBC的PreparedStatementCreator时有些困惑 例如考虑以下代码 public class SpringTes
  • PowerShell - 枚举集合并更改集合

    如何修复这个脚本 是的 我正在更改 foreach 循环中的集合 这就是此错误的原因 枚举集合时发生错误 集合已修改 枚举操作可能无法执行 在 C Users user Documents PowerShell ChangeAllLists
  • Android SSO Okta 集成示例

    对 Okta 和 Android 不太了解 有谁知道一个很好的教程 它展示了如何将 Android 应用程序连接到 Okta 框架中 或者我是否实施 SAML SSO 实施 然后将 Okta 与其关联 任何代码示例都值得赞赏 特别是显示通用
  • “ceq”MSIL 命令和 object.InternalEquals 之间的区别

    我在 ILDASM 和 Reflector 中进行了深入研究 发现 被编译为 ceq MSIL 命令 object Equals 保持原样 object Equals 调用 对象 InternalEquals This https stac
  • Laravel eloquent 不更新 JSON 列:数组到字符串的转换

    我想更新一个JSON我的数据库中的列 但我收到此错误 Array to string conversion 我已将列名称声明为array在模型中 protected casts destinations gt array 这是我使用的代码
  • 编译具有不同java源兼容性的项目

    我有一个包含 3 个不同项目的多项目配置 其中 2 个项目依赖于第三个项目 我将其命名为 核心 根据项目的不同 core 必须编译为 jar 分别与 1 4 和 1 6 兼容 输出为 core 1 4 jar 和 core 1 6 jar