我目前在 Jenkins 中配置了一个项目(项目 A),它构建了一个 .jar Artifact ,并由 Web 服务项目(项目 B)使用。该项目(项目A)由公共(public)库文件组成;这些文件也被基于 android 的应用程序(项目 C)使用。
问题:我无法在(项目 C)中使用(项目 A)内置的 jar; Reason(项目 C)是使用 Android 工具构建的,而(项目 A)是使用 eclipse spring 工具构建的,并由(项目 B)使用,后者也是使用 spring 工具构建的。文件夹结构和 build.scripts 不同!!!
我尝试了什么:我使用 Android Studio 使用(项目 A)中的源文件创建了一个新的库项目(项目 D),设法生成一个 .aar 文件并将此模块添加为我的 android 项目(项目 C)中的依赖项。这行得通!!
问题:
如何使用 Jenkins 实现上述目标,即 我的公共(public)库文件的单一源存储库 应该用于构建 .jar,如(项目 A ) 以及 Jenkins 中的 .aar(项目 D)?如果具有构建自动化专业知识的人可以共享构建步骤以实现相同目标,将不胜感激。
编辑 1: 是否有可用于构建 .jar 和 .aar 文件的通用文件夹结构,我可以分别在 eclipse 和 android studio 中使用它们?
更新 1: 我设法在 git 中为我的公共(public)库项目(项目 A)创建了一个基于 Android 的文件夹结构的单一存储库(与之前基于 eclipse 的文件夹结构相比);并且还生成了一个可在两个项目(项目 B 和 C)中使用的 .jar Artifact ,对项目 B 和 C 中的 .gradle 文件进行了一些修改!仍在研究 Jenkins 自动化部分......
我还了解到(项目 A)和(项目 D)的构建脚本 (build.gradle) 发生了变化;是否可以通过保留单个源存储库来指定 Jenkins 为特定项目使用特定的构建脚本? (项目 A 的 gradle.build-A 和项目 D 的 gradle.build-D)任何实现相同目标的指示也会有所帮助。
提前致谢
最佳答案
我不确定我是否理解正确,但是:
如果您使用 jenkins 构建一个 .jar
并将其部署到您的 Nexus,它应该可以像任何其他依赖项一样从您的 Android Studio 项目访问。您需要注意的是,您的 build.gradle
(在项目级别)将 Nexus 配置为存储库(我相信默认是 jCenter())。
如果您不运行 Nexus 或 Artifactory 或类似的东西,我猜您只是将 jars 放在 lib 文件夹中。你仍然可以用你的 jar 做这个。
Android ARchives (.aar
) 很像 .jar
但它们考虑了一些特殊的资源,常规的 .jar
只是没有(例如 list )。
如果您的项目 A 中的库是普通的旧 Java,我认为没有理由这不起作用(可能是某种 JDK 版本差异),就像任何其他依赖项一样包含它。
Android 与其他 Java 项目之间确实存在差异。
Android 使用 android-gradle 进行构建,通常您使用 Maven 构建 Java 应用程序。
来自 Maven 的内置 .jar
绝对可以在 android-gradle 应用程序中使用,我经常这样做。
关于java - 如何使用 Jenkins 为相同的源代码构建 .jar 和 .aar Artifact ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38302318/