Java二阶知识点总结(一)Maven

一、Maven概念

Maven是一个项目管理工具,其主要作用有2点

  • 依赖管理:管理项目依赖的各种jar包
  • 自动构建:项目构建的过程,从编译、测试、运行、打包到安装的过程可以一键执行

二、Maven工程的目录结构

  • src/main/java:存放项目的.java文件
  • src/main/resources:存放项目资源文件,如spring配置文件
  • src/test/java:存放所有单元测试.java文件,如JUnit测试类
  • src/test/resources:测试资源文件
  • target:项目输出位置,编译后的class文件会输出到此目录
  • pom.xml:maven项目核心配置文件
  • 注意:以上目录约定大于配置,最好不要修改位置和名称

三、Maven仓库的分类

四、Maven的常用命令

  • compile:编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下
  • test:测试命令,作用是执行src/test/java下的单元测试类
  • clean:清理命令,执行 clean会删除target目录及内容
  • package:打包命令,对于java工程执行package打成jar包,对于web工程打成war包
  • install:安装命令,执行install将maven打成jar包或war包发布到本地仓库
  • 注意:理论上后面的命令执行时,前面的命令也会依次执行 直到当前命令;但有时候Maven会因为某些情况认为jar包是最新的而不执行clean操作 ,进而导致jar包未更新,因此,保险起见,在每次打包前最好先执行clean命令,然后再执行package命令

五、项目对象模型(Project Object Model)

  • 对标pom.xml文件
  • 基本配置
xml 复制代码
<project>:文件的根节点
<parent>:指定继承的父模
<modelversion>:pom.xml使用的对象模型版本
<groupId>:项目名称,一般写项目的域名
<artifactId>:模块名称,子项目名或模块名称
<version>:产品的版本号 .
<packaging>:打包类型,一般有jar、war、pom 等
<name>:项目的显示名,常用于 Maven 生成的文档。
<description>:项目描述,常用于 Maven 生成的文档
<properties>:设置一些属性,通常指定jar包的版本、设置编译版本
<dependencies>:项目依赖构件配置,配置项目依赖构件的坐标
<build>:项目构建配置,配置编译、运行插件等。
  • 依赖坐标
xml 复制代码
<dependency>
    <!--项目名称,定义为组织名+项目名,类似包名-->
    <groupId>com.ljj</groupId>
    <!-- 模块名称 -->
    <artifactId>hello_maven</artifactId>
    <!-- 当前项目版本号,snapshot为快照版本即非正式版本,release为正式发布版本 -->
    <version>0.0.1-SNAPSHOT</version>
    <!-- 依赖范围 -->
    <scope></scope>
</dependency>
<!-- 打包类型,有jar和war两种 -->
<packaging >war</packaging >
  • 常用属性
txt 复制代码
${project.groupId}:项目的groupId.
${project.artifactId}:项目的artifactId.
${project.version}:项目的version,于${version}等价 
${project.basedir}:表示项目根目录,即包含pom.xml文件的目录;  
${project.build.sourceDirectory}:项目的主源码目录,默认为src/main/java/.
${project.build.testSourceDirectory}:项目的测试源码目录,默认为/src/test/java/.
${project.build.directory}:项目构建输出目录,默认为target/.
${project.outputDirectory}:项目主代码编译输出目录,默认为target/classes/.
${project.testOutputDirectory}:项目测试代码编译输出目录,默认为target/testclasses/.
${project.build.finalName}:项目打包输出文件的名称,默认为${project.artifactId}-${project.version}

常见应用

1、引入外部jar包

  • 把jar放到项目中,如下,新建文件夹lib,并将外部jar包放入。该目录路径可以改,但注意pom.xml文件中的路径配置要对应上
  • 配置依赖,如下,每个jar包都要单独引入
xml 复制代码
		<dependency>
			<groupId>org.geotools</groupId>
			<artifactId>gt-shapefile</artifactId>
			<version>19.2</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/lib/gt-shapefile-19.2.jar</systemPath>
		</dependency>
		<dependency>
			<groupId>org.ejml</groupId>
			<artifactId>ejml-core</artifactId>
			<version>0.39</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/lib/ejml-core-0.39.jar</systemPath>
		</dependency>
  • 配置打包
xml 复制代码
<configuration>
	<!-- 引用本地jar包配置-->
	<includeSystemScope>true</includeSystemScope>
</configuration>

2、多模块开发,引用其他模块,且附带目标模块的依赖

  • 配置打包,和上图位置一样
xml 复制代码
<configuration>
    <classifier>exec</classifier>
</configuration>
  • 打包后可能会生成两个jar包,带exec的是可执行jar包,不带的用于给其他模块依赖

3、把第三方jar包放入本地仓库

  • 找到第三方jar包所在目录,在地址栏输入cmd进入命令窗口
  • 输入如下命令:注意groupid、artifactid、version的值按照第三方jar包的实际配置修改
shell 复制代码
mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dfile= fastjson-1.1.37.jar -D

参考

相关推荐
MY_TEUCK1 天前
Sealos 平台部署实战指南:结合 Cursor 与版本发布流程
java·人工智能·学习·aigc
2401_873479401 天前
如何利用IP查询定位识别电商刷单?4个关键指标+工具配置方案
开发语言·tcp/ip·php
我爱cope1 天前
【从0开始学设计模式-10| 装饰模式】
java·开发语言·设计模式
菜鸟学Python1 天前
Python生态在悄悄改变:FastAPI全面反超,Django和Flask还行吗?
开发语言·python·django·flask·fastapi
朝新_1 天前
【Spring AI 】图像与语音模型实战
java·人工智能·spring
RH2312111 天前
2026.4.16Linux 管道
java·linux·服务器
zmsofts1 天前
java面试必问13:MyBatis 一级缓存、二级缓存:从原理到脏数据,一篇讲透
java·面试·mybatis
浪浪小洋1 天前
c++ qt课设定制
开发语言·c++
charlie1145141911 天前
嵌入式C++工程实践第16篇:第四次重构 —— LED模板,从通用GPIO到专用抽象
c语言·开发语言·c++·驱动开发·嵌入式硬件·重构
故事和你911 天前
洛谷-数据结构1-4-图的基本应用1
开发语言·数据结构·算法·深度优先·动态规划·图论