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

参考

相关推荐
Wang's Blog3 分钟前
Lua: 基于协程的生产者-消费者模型实现
开发语言·lua
毕设源码-赖学姐13 分钟前
【开题答辩全过程】以 基于Springboot的智慧养老系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
jamesge201014 分钟前
限流之漏桶算法
java·开发语言·算法
jvstar16 分钟前
JAVA面试题和答案
java
冷雨夜中漫步16 分钟前
OpenAPITools使用——FAQ
android·java·缓存
Dargon28817 分钟前
Simulink的SIL软件在环测试
开发语言·matlab·simulink·mbd软件开发
9坐会得自创21 分钟前
使用marked将markdown渲染成HTML的基本操作
java·前端·html
csbysj202028 分钟前
SVG 椭圆详解
开发语言
Hello.Reader42 分钟前
Flink ML 线性 SVM(Linear SVC)入门输入输出列、训练参数与 Java 示例解读
java·支持向量机·flink