【问题标题】:Maven build and deploy for different platform targets (like Android and Java SE)针对不同平台目标(如 Android 和 Java SE)的 Maven 构建和部署
【发布时间】:2015-09-18 15:31:11
【问题描述】:

我有一个实用程序库,用于“普通”Java 项目和 Android 项目。

这些平台之间存在细微差别:

  • Java SE 需要 org.json:json:20080701 作为依赖项
  • Android 已经在核心平台中为 JSON 提供了一个编译兼容的库

我想要什么

最好的情况是有一个 pom.xml 来创建和部署 2 个工件,例如

  • mylib-android-1.2.0.jar
  • mylib-1.2.0.jar

我发现了类似“分类器”之类的东西,可能用于此目的,但我只在依赖关系的上下文中看到了这一点,而不是用于定义构建工件。

谁能给我举个例子(可能是一个著名的开源项目)如何做到这一点?

备注:我尝试使用 <scope>provided</scope> 定义 org.json:json:20080701,但 Android Gradle 构建抱怨潜在的不兼容性,这将迫使“Java SE”用户添加此依赖项。不是理想的解决方案。

如果你想查看 pom.xml,这里是:https://github.com/hgoebl/DavidWebb/blob/v1.1.0/pom.xml

这是使用当前库时的 Gradle 输出:

警告:releaseUnitTest 忽略依赖关系 org.json:json:20080701,因为它可能与 Android 提供的内部版本冲突。 如有问题请用jarjar重新打包更改类包

【问题讨论】:

    标签: java android maven gradle android-gradle-plugin


    【解决方案1】:

    您正在寻找的是Maven Profiles。您可以为每个配置文件自定义依赖项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-19
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多