java - Maven 针对不同平台目标(例如 Android 和 Java SE)构建和部署

标签 java android maven gradle android-gradle-plugin

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

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

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

我想要什么

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

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

我发现了类似“分类器”的东西,它可能用于此目的,但我只在依赖项的上下文中看到它,而不是用于定义构建 Artifact 。

有人能给我举一个例子(也许是一个著名的开源项目)如何做到这一点吗?

备注:我尝试使用 <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 输出:

WARNING: Dependency org.json:json:20080701 is ignored for releaseUnitTest as it may be conflicting with the internal version provided by Android. In case of problem, please repackage with jarjar to change the class packages

最佳答案

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

关于java - Maven 针对不同平台目标(例如 Android 和 Java SE)构建和部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32655812/

相关文章:

java - 从指定路径获取文件

java套接字 - 测量发送和响应所需的时间

java - AspectJ 未捕获所有方法

java - 与资源一起部署war文件

java - graph/dnd java Web 应用程序使用哪个框架

java - main.xml 中的 GLSurfaceView 空指针异常

java - Android FinalizerDaemon 挂了

android - 生活单例,当 Activity 结束时

maven - java.lang.ClassNotFoundException : javax. faces.webapp.FacesServlet,tomcat 没有看到 javaee-api-7.0-b83.jar

java - 将 Artifact 部署到两个不同的远程存储库 - Maven?