【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

相关文章

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

电脑多久清理一次灰尘合? 合理清理电脑上灰尘的科普文

《电脑多久清理一次灰尘合?合理清理电脑上灰尘的科普文》聊起电脑清理灰尘这个话题,我可有不少话要说,你知道吗,电脑就像个勤劳的工人,每天不停地为我们服务,但时间一长,它也会“出汗”——也就是积累灰尘,... 灰尘的堆积几乎是所有电脑用户面临的问题。无论你的房间有多干净,或者你的电脑是否安装了灰尘过滤器,灰尘都

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL