maven管理工具
程序员文章站
2022-03-25 20:54:20
Maven解决的问题: 1. 使用maven前搭建项目需要引入各种jar包,并且还可能有jar包冲突的问题 解决jar包冲突的方式: 1. 第一声明优先原则 2. 路径近者优先原则. 直接依赖路径比传递依赖路径近. 直接依赖: 项目中直接导入的jar包,就是该项目的直接依赖包 传递依赖: 项目中没有 ......
maven解决的问题:
1. 使用maven前搭建项目需要引入各种jar包,并且还可能有jar包冲突的问题 解决jar包冲突的方式: 1. 第一声明优先原则 2. 路径近者优先原则. 直接依赖路径比传递依赖路径近. 直接依赖: 项目中直接导入的jar包,就是该项目的直接依赖包 传递依赖: 项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中去. 3. 直接排除法(推荐) 使用<exclusions>标签,排除jar包下的依赖包(在dependency中使用) <exclusions> <exclusion> <groupid></groupid> <artifactid></artifactid> </exclusion> </exclusions> 2. maven可以向ide一样,将代码编译为class字节码文件 3. 可以指定某个目录下的单元测试一次执行,明确知道哪些是有异常的.哪些对的. 4. 可以直接将java项目进行打包,一个命令解决
maven的核心功能
1. 依赖管理: maven工程对jar包的管理过程.(节省磁盘空间,符合代码可重用) jar包的坐标: 根据坐标去仓库寻找jar包并依赖 jar包的仓库: 存放和管理jar包的仓库 2. 一键构建: 项目的整个构建过程,使用maven一个命令可以轻松完成整个工作. 构建: 指的是项目从编译、测试、运行、打包、安装, 部署整个过程都交给maven进行管理,这个过程叫做构建 mvn tomcat:run ====> 运行项目
安装:
1. 下载: http://archive.apache.org/dist/maven/maven-3/ 2. 解压: 注意路径没有中文,没有空格 3. 配置环境变量: 新建 maven_home maven解压的路径 编辑 path 新建 %maven_home%\bin 4. 测试: cmd ===> mvn -v
maven仓库的种类:
1. 本地仓库(默认是c盘,建议修改) 重新指定本地仓库: <localrepository>指定文件夹</localrepository> 2. 远程仓库(私服) 3. *仓库(几乎所有开源的jar包) > 仓库间的关系: 启动maven工程,maven会通过pom文件的jar包坐标去本地找对应jar包 默认情况下,如果本地仓库没有jar包,会自动去*仓库下载 在公司中,如果本地没有,会先从私服上下载,如果私服没有,可以从*仓库下载,也可以本地上传
maven的标准目录结构:
web工程(java工程只包含前四个): src/main/java ----> 核心代码部分 src/main/resources ----> 配置文件部分 src/test/java ----> 测试代码部分 src/test/redources ----> 测试配置文件 src/main/webapp ----> 页面资源
maven的常用命令
mvn clean ===> 删除编译好的本地项目信息(删除target目录) mvn compile ===> 将src/main/java代码进行编译放置在target目录下 mvn test ===> 编译src/main/test和src/main/java下的java代码 mvn package ===> 将项目进行打包(同时会编译)放在target目录下(至于是war包还是jar包由pom.xml中的配置决定) mvn install ===> 将代码进行编译并打包,并把包放在本地仓库下 mvn deploy ===> 部署项目,包含了前面5个命令
maven的生命周期(3套)
清理生命周期 清除项目编译信息 ====> clean 下面的五个命令就是一个默认的生命周期,执行后面的命令前面的命令也会执行一遍 编译 ====> compile 测试 ====> test 打包 ====> package 安装 ====> install 发布 ====> deploy 站点生命周期(知道有这个概念就好)
maven的概念模型图
maven与idea的集成
1. idea的configure下的setting选项配置本地的maven和settings的路径 2. maven下的 runner选项下配置 vm options -darchetypecatalog=internal
maven项目的聚合,拆分和依赖(对于概念不是很了解,只知道用法)
简单来说就是将一个项目分成多个模块. 1. 工程和模块的区别: 1. 工程不等于完整的项目,模块也不等于完整的项目,完整的项目看的是代码的完整性,代码完整就是一个完整的项目. 和此项目是工程和模块没有任何关系. 2. 工程天生只能使用自己内部的资源,工程天生是独立的.但是后天可以和其他项目和模块产生关系 模块天生不是独立的,模块天生是属于父工程的,模块一旦创建,所有父工程的资源都可以使用. 3. 父子工程之间,子模块天生集成父工程,可以使用父工程所有资源. 子模块之间天生没有任何关系.但是可以使用dependency产生关联. 4. 父子工程之间不用建立关系,继承关系是先天的,不需要手动建立. 5. 平级之间的引用叫依赖,依赖不是先天的,依赖是需要后天建立的. 2. 提供一个ssm整个的聚合拆分模板,可以去下载(使用的坚果云) https://www.jianguoyun.com/p/duv6dueq7skpbxjeths
maven运行环境修改
1. tomcat7插件: <plugin> <groupid>org.apache.tomcat.maven</groupid> <artifactid>tomcat7-maven-plugin</artifactid> <version>2.2</version> <configuration> <!--指定端口号--> <port>8080</port> </configuration> </plugin> 2. jdk8插件 <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-compiler-plugin</artifactid> <configuration> <target>1.8</target> <source>1.8</source> <encoding>utf-8</encoding> </configuration> </plugin>
私服的搭建和基本使用
1. 命令行窗口(管理员身份运行) 2. 切换到解压缩后的bin目录 nexus install ====> 安装 nexus uninstall ====> 卸载 3. 访问: 默认端口号是8081 localhost:8081/nexus 4. 仓库的类型: * proxy: 代理仓库,主要代理远程的仓库,私服和远程仓库之间的连接 * group: 仓库组,通常包含了多个代理仓库和宿主仓库,在项目中只要引入仓库组就可以下载到代理仓库和宿主仓库中的包 * hosted:宿主仓库,内部项目、付费jar 1. releases 发布内部release版本的仓库(正式版本) 2. snapshots 发布内部snapshots版本的仓库(测试版本) 3. third 自建第三方jar 5. 上传jar包到私服: 先配置本地maven的配置文件: servers标签内部配置: <server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server> maven项目的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> 之后使用deploy命令就可以将项目进行部署,并打包,将包上传到nexus私服. 6. 从nexus下载jar包配置: <profiles> <profile> <!--profile的id --> <id>dev</id> <repositories> <repository> <!--仓库id,repositories可以配置多个仓库,保证id不重复 --> <id>nexus</id> <!--仓库地址,即nexus仓库组的地址 --> <url>http://localhost:8081/nexus/content/groups/public/</url> <!--是否下载releases构件 --> <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> </profiles> <activeprofiles> <activeprofile>xdclass</activeprofile> <activeprofile>dev</activeprofile> </activeprofiles> 7. 安装第三方jar包到本地仓库: ----进入jar包所在目录运行 mvn install:install-file -dgroupid=com.alibaba -dartifactid=fastjson -dversion=1.1.37 -dfile=fastjson-1.1.37.jar -dpackaging=jar ----打开cmd直接运行 mvn install:install-file -dgroupid=com.alibaba -dartifactid=fastjson -dversion=1.1.37 -dpackaging=jar -dfile=d:\fastjson-1.1.37.jar(切换成自己的目录) 8. 安装第三方jar包到私服: --在settings配置文件中添加登录私服第三方登录信息 <server> <id>thirdparty</id> <username>admin</username> <password>admin123</password> </server> ----进入jar包所在目录运行 mvn deploy:deploy-file -dgroupid=com.alibaba -dartifactid=fastjson -dversion=1.1.37 -dpackaging=jar -dfile=fastjson-1.1.37.jar -durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -drepositoryid=thirdparty ----打开cmd直接运行(指定自己的jar包) mvn deploy:deploy-file -dgroupid=com.alibaba -dartifactid=fastjson -dversion=1.1.37 -dpackaging=jar -dfile=c:\fastjson-1.1.37.jar -durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -drepositoryid=thirdparty
推荐阅读