【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

相关文章

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

Android实现一键录屏功能(附源码)

《Android实现一键录屏功能(附源码)》在Android5.0及以上版本,系统提供了MediaProjectionAPI,允许应用在用户授权下录制屏幕内容并输出到视频文件,所以本文将基于此实现一个... 目录一、项目介绍二、相关技术与原理三、系统权限与用户授权四、项目架构与流程五、环境配置与依赖六、完整

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++