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