【Git之窗】(二)记我为“Arquillian”开源框架贡献一次源码的经历

2024-08-26 21:18

本文主要是介绍【Git之窗】(二)记我为“Arquillian”开源框架贡献一次源码的经历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    在上一家公司工作的时候,组长说,以后找工作简历上写,我为“xxx”开源项目贡献过源码,那你就NB了,恰巧今天我就干了这样一件事情。


一、 起源:

    前几天我的好朋友文彬说研究下EJB的单元测试吧,因为“EJB3Unit”对我们itoo的"vo"支持的不是很好,于是给了我一些资料,以这个“Arquillian”框架为主,“http://arquillian.org/invasion/”(这是官网,朋友们可以去逛逛),在使用Jobss集成的Forge工具创建空的Maven项目时,问题出来了,如图:

          创建了一个名为“Arquillian-tutorialabc”的空的Maven项目,并且为该项目添加了“jboss-javaee-6.0”的依赖,可是当你打开这个项目的pom文件之后,发现有问题:

<dependencies><dependency><groupId>org.jboss.spec</groupId><artifactId>jboss-javaee-6.0</artifactId><type>provided</type><scope>pom</scope></dependency>
</dependencies>
<dependencyManagement>
<dependencies><dependency><groupId>org.jboss.spec</groupId><artifactId>jboss-javaee-6.0</artifactId><version>1.0.0.Final</version><type>provided</type><scope>pom</scope></dependency>
</dependencies>
</dependencyManagement>
    前段时间看了浩哥推荐的《Maven实战》,细心的你会发现<type>和<scope>中的内容貌似颠倒了,当然,这里非常感谢浩哥,几天前我最开始敲Demo的时候,死活以为是没有引用到jar包,这个标签内容混乱的bug还是被浩哥发现了,以为是自己粗心,后来通过Forge命令新建别的Maven项目的时候,发现同样有这样的问题,如图,这是官网的教程:

           于是乎,我怀疑官网的这条命令打错了,自己又新建了一个Maven空项目,添加“jboss-javaee”依赖的时候,将“Final:provided:pom”修改成"Final:pom:provided",结果生成的pom文件没有任何问题!!!

    我的天那!!!我竟然发现了“Arquillian”官方的bug!!!



二、动手

    紧接着,另一点让我兴奋的是,我发现“Arquillian”竟然是开源的,而且代码全部托管在Github上面,我的天哪!!!上天给我一个这样的机会,让我为这个开源框架做一下贡献啊,干吧!!!

    之后我在GitHub上找到了“Arquillian”的源码,如图:


   这里点击右上角的fork按钮,先将这个项目fork到自己的GitHub仓库中,如图(右下角那个arquillian.github.com):


   简直爽到不行,下面开始在我自己fork的这个"arquillian"中找到对应的文件,由于问题在于使用“forge”为建立的空项目添加“java-ee”依赖时命令错了,我找到了对应的代码地址:


    点开后,点击右上角的一个"Edit"图标,表示我可以在自己的分支上去修改这个代码,如图在这里(红框中的修改图标):


    这个时候,我就可以去修改我要改动的第217行错误的代码了:


   如图所示,我已经将这个forge命令从官网中的:

$ project-add-dependencies org.jboss.spec:jboss-javaee-7.0:1.0.3.Final:provided:pom
          修改成了:

$ project-add-dependencies org.jboss.spec:jboss-javaee-7.0:1.0.3.Final:pom:provided
       至此,已经解决了使用官网中的forge命令产生错误的pom文件的bug,接下来,就是要向原作者发送请求了,通知他们这里有一个bug,仍然是上面的界面,往下拖动滚动条:


    我的这个截图有个问题,先选择“Commit directly to the develop branch”,把自己修改的代码提交到本地的“develop”分支,中间是我所填充的和源码作者的交流内容:

Hello author:there is a fault for a command at line 217 which is "$ project-add-dependencies org.jboss.spec:jboss-javaee-6.0:1.0.0.Final:pom:provided ",perhaps when i execute this command, this project's pom.xml has an error , like:"<type>provided</type>; <scope>pom</scope>",so i changed this command like"~Final:provided:pom",then, it's right. 
       之后点击“Propose file change”,就将修改放到了本地“develop”分支。

    再往后,点击界面上方的“pull request”,这里也是我今天刚学到的地方,如何和原作者联系:“https://help.github.com/articles/about-pull-requests/”这是GitHub官网给出的操作方法,之后的界面,点击create pull request之后,如图:


    在这里,可以选择自己本地代码的分支,因为我将修改后的代码提交到了我的“develop”分支,就在“compare”选项中选择“develop”和原作者的“base fork”代码进行对比,如图:


    这一步骤应该是要我确认下代码信息,没有问题后点击“Create pull request”:


   下面就是等待“Arquillian”这个开源项目的原作者来处理我的请求了,至此为他们发现并解决了一个利用forge命令来添加<dependency>依赖时的bug,而此时,我也成为了这个项目中这个模块下的一个contributors了。

      

     That's all.

    最后感谢文彬让我研究这个Arquillian的EJB测试,感谢浩哥当时提供的技术支持。

       


   

这篇关于【Git之窗】(二)记我为“Arquillian”开源框架贡献一次源码的经历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109701

相关文章

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

java 恺撒加密/解密实现原理(附带源码)

《java恺撒加密/解密实现原理(附带源码)》本文介绍Java实现恺撒加密与解密,通过固定位移量对字母进行循环替换,保留大小写及非字母字符,由于其实现简单、易于理解,恺撒加密常被用作学习加密算法的入... 目录Java 恺撒加密/解密实现1. 项目背景与介绍2. 相关知识2.1 恺撒加密算法原理2.2 Ja

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre