初学java编程,不知道怎么打包,或者说不知道打包的原理,本文来一探究竟
构建软件项目就像是去执行一系列任务,下载依赖,把jar包添加到classpath,把源码编译成字节码,运行测试,打包成为jar或war或者zip文件,最后是部署。
什么是jar文件?
jar除了是一个压缩文件外,它内部还额外包含了其他内容, 通过unzip解压jar包,可以发现里面包含了.class
文件和META-INF/MANIFEST.MF
打jar包的几种方式
1.通过idea 的build artifacts
2. 通过maven插件打包
3. 通过jar命令打包
4. 把依赖打入jar包中
5. springboot项目打jar包
1.通过jar打包
javac 要编译的文件 -d 目标位置
jar -cvfm 命名 MENIFEST文件 *
3.maven打包
因为大部分时候是通过maven进行管理的,所以主要介绍使用maven进行打包过程。
pom(project object model)
过程:
- mvn compile
- mvn package 将会生成归档文件jar/war等
3.1 项目标识
你看一下,你自己的项目中如何引入依赖的,就可以知道我们需要一种唯一确定一个包的方式
元素 | 距离 |
---|---|
groupId | com.alibaba |
artifactId | dubbo |
version | 2.5.6 |
3.2 依赖管理
从远端仓库中自动下载依赖的库文件,不必手动一个个添加jar文件了
例如:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.5.RELEASE</version>
</dependency>
3.3 仓库
- 本地仓库 默认位置
~/.m2/repository
- 远程仓库
例如:
<repositories>
<repository>
<id>JBoss repository</id>
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
</repositories>
3.4 属性设置
Maven properties are value-placeholders and are accessible anywhere within a pom.xml by using the notation ${name}, where name is the property.
3.5 build
ant打包
还有一些项目是使用ant进行管理的,这就要求我们至少能够使用ant
gradle打包
在安卓项目中,gradle比maven更常见,所以也要学习一下
参考 & 扩展
http://ifeve.com/maven-1/
https://maven.apache.org/index.html
https://www.baeldung.com/maven
https://www.infoq.cn/article/2011/04/xxb-maven-7-plugin/
https://blog.csdn.net/zjf280441589/article/details/53044308