日常项目中我们是如何使用别人的开源项目的?
众所周知,一般我们在项目开发中都会引用很多的第三方或者其他项目的组件和类对象,我们可能有两种方式管理这些外部项目,两个非常强大的构建和管理Java项目的工具 Maven和Gradle。就拿 Maven举例,Maven有两个非常强大的功能 依赖管理 和 中央仓库(Central Repository)。正是因为有了这两个功能,使我们日常项目开发中引入开源项目的步骤变得非常简单。
想一想是不是我们日常集成一个开源的项目的时候,只需要在Maven的pom.xml中引入一个依赖
xml
<dependency>
<groupId>com.xxx</groupId>
<artifactId>xxx-java-sdk-xxx</artifactId>
<version>${xxx.version}</version>
</dependency>
然后更新依赖,也就是 Reload All Maven Project
,你的 Libraries 中就会出现。
当出现上图之后,就可以顺利的使用这个开源项目中的类库和方法了。
但是究其根源,Maven开头的这些项目其实是存储在Maven的中央仓库(Central Repository)中,开源公司或者个人只需要打包自己的开源项目,然后上传到Maven的中央仓库中,然后我们需要集成这个开源项目的时候在用Maven将这个项目拉取下来,就可以在本地使用了。
那自己的项目想要封装成轮子让别人引用,需要怎么做呢?
其实很简单,你将刚才的 Maven 依赖点开。
有没有发现了很熟悉的东西,jar包。就是和我们java在部署上线的时候的jar一样。
Jar 包
在Java中,JAR(Java Archive)包是一种用于打包和压缩Java类、资源文件和元数据的文件格式。JAR文件通常用于分发Java应用程序或库。
JAR包定义包括以下几个重要方面:
- 结构:JAR包是一个压缩文件,其内部包含了Java类文件、资源文件、元数据文件(如清单文件Manifest)以及其他可能需要的文件。JAR包采用zip格式进行压缩,可以包含一个或多个目录和文件。
- 打包工具 :在Java开发中,通常使用JDK自带的
jar
命令行工具或者构建工具(如Maven、Ant等)来创建JAR包。这些工具可以指定JAR包的文件组织结构、清单文件内容、以及其他选项。 - 执行 :JAR包可以被Java虚拟机(JVM)直接执行。通常情况下,使用
java -jar
命令即可直接启动JAR包中所包含的主类。 - 分发:JAR包是Java程序分发和交付的标准格式之一。它允许开发者将程序和相关资源打包为一个文件,便于在不同的环境中进行传播和部署。
其实你可以理解为它就是一个压缩包,将我们的项目压缩成为一个文件然后供其他外部使用。
所以呢如果我们自己想要封装一个轮子,供给外部使用,只需要我们将自己的项目打成jar包,然后别人项目调用即可。
光说理论没用的,如何一步一步实现它呢?
第一步,我们首先创建一个Java项目
就拿最简单的,我们的原生的java做个示例吧。
首先我们需要创建一个Java项目。
就拿最简单的,我们的原生的java做个示例吧。
第二步,创建我们的工具类
接着我们需要创建一个调用类,这里写了一个计算器类,方法是简单的求两个整数之和。
我们这个项目中必须要写Main,否则打包工具不通过我们的请求,main方法可以什么都不写。(打包的时候会检测我们项目中有没有可执行的线程,如果我们知识需要做一个工具类库的话,main方法就是个摆设,加着就好,不用管他。)
第三步,打包
按照下边的步骤在IDEA中一步一步来
- 第一步
- 第二步
- 第三步
- 第四步
- 第五步
- 第六步
我们的jar包就打包好了
接下里看看这个项目打成的jar包被其他项目如何引用吧
首先创建一个新项目,就叫QuoteTestPackJar
,然后和src目录平齐创建一个lib文件夹,将jar包复制进去。
然后将这个lib文件夹加入Library。
接下来我们来试试看能不能调用我们的TestPackjar
中的Calculator
中的add
方法吧。
OK,调用成功。
这就是一个造轮子的一个简单的示例。如果你想你自己的开源项目被大家都使用,可以将你的开源项目上传到Maven的中央仓库(Central Repository),具体如何上传,可能我抽空会上传一个自己的开源项目上去,然后将步骤记录下来,期待接下来的文章吧!
如果你需要造一个轮子,你需要的是创意、灵感 和 深厚的计算机知识和代码的基本工,本文只是用一个简单的例子来告诉你一件你一直在用,但是并没有在意的一件事情。
其实一个程序员可以去造轮子,是一件非常酷的事情。
期待你对开源社区的贡献。
总结
一定要多思考,如果人永远待在舒适圈的话,人永远不会成长。共勉
觉得作者写的不错的,值得你们借鉴的话,就请点一个免费的赞吧!这个对我来说真的很重要。૮(˶ᵔ ᵕ ᵔ˶)ა