MAVEN基础知识
1. 目录框架
src/main/java —— 存放项目的.java 文件
src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件
src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类
src/test/resources —— 测试资源文件
target —— 项目输出位置,编译后的 class 文件会输出到此目录
pom.xml——maven 项目核心配置文件
2. 常用命令
1. mvn compile 作用是将 src/main/java 下的文件编译为 class 文件输出到 target目录下
2. mvn clean 执行 clean 会删除 target 目录及内容
3. mvn test 作用执行 src/test/java 下单元测试类
4. mvn package 对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war包。
5. mvn install 执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库
3. 生命周期
maven定义了项目的三套生命周期
1. Clean Lifecycle 在进行真正的构建之前进行一些清理工作。【清理生命周期】
2. Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。【默认生命周期】
3. Site Lifecycle 生成项目报告,站点,发布站点。【站点生命周期:(了解)】
4. jar的坐标
groupId:公司/组织
artifactId:项目名称
version:项目版本信息
注意: 我们可以使用坐标唯一确定的一个jar的路劲
5. 坐标定义
在 pom.xml 中定义坐标,内容包括:groupId、artifactId、version,详细内容如下:
<!--项目名称,定义为组织名+项目名,类似包名-->
<groupId>cn.itcast.maven</groupId>
<!-- 模块名称 -->
<artifactId>maven-first</artifactId>
<!-- 当前项目版本号,snapshot 为快照版本即非正式版本,release 为正式发布版本 -->
<version>0.0.1-SNAPSHOT</version>
<packaging > :打包类型
jar:执行 package 会打成 jar 包
war:执行 package 会打成 war 包
pom :用于 maven 工程的继承,通常父工程设置为 pom
6. pom基本配置
pom.xml 是 Maven 项目的核心配置文件,位于每个工程的根目录,基本配置如下:
<project > :文件的根节点 .
<modelversion > : pom.xml 使用的对象模型版本
<groupId > :项目名称,一般写项目的域名
<artifactId > :模块名称,子项目名或模块名称
<version > :产品的版本号 .
<packaging > :打包类型,一般有 jar、war、pom 等
<name > :项目的显示名,常用于 Maven 生成的文档。
<description > :项目描述,常用于 Maven 生成的文档
<dependencies> :项目依赖构件配置,配置项目依赖构件的坐标
<build> :项目构建配置,配置编译、运行插件等
maven高级
1. jar包冲突:
概述: 项目中依赖多个不同版本的相同的jar
什么时候处理jar包冲突?
在运行程序的时候,报了找不到类或者其他的异常,但是对应的jar已经引入到项目中,这个时候,可能是版本的问题
解决:
(1)第一声明优先原则
(2)直接依赖优先原则
(3)直接排除(常用也推荐使用)
2. pom.xml文件标签说明
dependencyManagement --> jar包锁定,子模块不能不能使用其他版本的jar包
没有引入jar包的功能
properties --> 统一的版本的管理
3. 父子工程
创建父工程 --> 可以选择创建工程(推荐),也可以选择创建模块
由父工程管理jar包
创建子工程 --> 只能创建模块
dao --> java项目
service --> java项目
controller --> web项目
4. 依赖关系
controller 依赖 service,也就是说在controller工程中添加service坐标
service 依赖于dao,也就是说在servie工程中添加dao的坐标
5. 私服服务器软件安装
nexus.bat install --> 安装
nexus.bat uninstall --> 卸载
nexus.bat start|stop
6. 私服的应用
1. 需要登陆私服,所以在maven的settings.xml的<servers>中添加一下代码
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
2. 上传到私服需要在相关项目的pom.xml文件中添加以下代码
<distributionManagement>
<repository>
<id>releases</id>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
3. 从私服上下载包在在maven的settings.xml的<profiles>中添加一下代码
<!-- 下载jar包配置 -->
<profile>
<!--profile的id -->
<id>dev</id>
<repositories>
<repository> <!--仓库id,repositories可以配置多个仓库,保证id不重复 -->
<id>nexus</id> <!--仓库地址,即nexus仓库组的地址 -->
<!--是否下载releases构件 -->
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases> <!--是否下载snapshots构件 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories> <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
<pluginRepository> <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
4. 在maven的settings.xml的</profiles>后添加一下代码
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
7. 导入jar包
列如:fastjson-1.1.37.jar
名字:fastjson
版本号:1.1.37
(id):com.alibaba
--安装第三方jar包到本地仓库
----进入jar包所在目录运行
mvn install:install-file -DgroupId=(id) -DartifactId=名字 -Dversion=版本号7 -Dfile=包名
-Dpackaging=jar
----打开cmd直接运行
mvn install:install-file -DgroupId=(id) -DartifactId=名字 -Dversion=版本号 -Dpackaging=jar
-Dfile=包的全路径名
--安装第三方jar包到私服
--在settings配置文件中添加登录私服第三方登录信息
<server>
<id>thirdparty</id>
<username>admin</username>
<password>admin123</password>
</server>
----进入jar包所在目录运行
mvn deploy:deploy-file -DgroupId=(id) -DartifactId=名字 -Dversion=版本号 -Dpackaging=jar -Dfile=包名
-Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty
----打开cmd直接运行
mvn deploy:deploy-file -DgroupId=(id) -DartifactId=名字 -Dversion=版本号 -Dpackaging=jar -Dfile=包的全
路径名 -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty
自己总结不足之处请予以补充