前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具

maven

作者头像
周杰伦本人
发布2023-10-12 14:08:53
发布2023-10-12 14:08:53
34700
代码可运行
举报
文章被收录于专栏:同步文章同步文章
运行总次数:0
代码可运行

1.什么是maven

是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的

软件开发过程

编码 编译 测试(junit) 运行 打包 部署

2.maven的好处:

依赖管理

一键构建

可以跨平台

应用于大型项目 可以提高开发效率

3.maven仓库

  1. 本地仓库 本地仓库的目录 默认在c盘用户的.m2/repository下
  1. 远程仓库(私服)
  2. 中央仓库

3.maven常用命令

mvn –v 验证maven是否配置成功

mvn clean 清理编译的文件

mvn compile 编译了主目录的文件

mvn test 编译并运行了test目录的代码

mvn package 打包

mvn install 就是把项目发布到本地仓库

Tomcat:run 一键启动(默认是tomcat6)

Tomcat7:run 一键启动 mvn deploy 发布项目

4、maven依赖管理

从网络上搜索

在eclipse中重建索引 以索引的方式搜索 添加依赖

坐标 GAV

代码语言:javascript
代码运行次数:0
运行
复制
<dependencies>

 <dependency>

    <groupId>cn.panpan</groupId>

    <artifactId>ssh</artifactId>

    <version>0.0.1-SNAPSHOT</version>
  </dependency>
</dependencies>

<build>  <!--里面放的是插件 -->
    <plugins>
        <plugin>
        </plugin>
    </plugins>
</build>

Packaging 三种打包方式

  1. Jar java文件
  2. war web项目
  3. pom 父工程

5、maven的jar包依赖范围

  1. Compile (struts2-core) 编译(compile)时需要测试时需要,运行时需要,打包时需要
  2. Provided (jsp-api.jar servlet-api.jar) 编译(compile)时需要,测试(test)时也需要,运行时不需要,打包时不需要
  3. Runtime (数据库驱动包) 编译时不需要,测试时需要,,运行时需要,打包时需要
  4. Test (junit.jar) 编译时不需要,测试时需要,运行时不需要,打包也不需要

6、maven 传递依赖

一:Maven依赖传递

代码语言:javascript
代码运行次数:0
运行
复制
假如有Maven项目A,项目B依赖A,项目C依赖B。那么我们可以说 C依赖A。也就是说,依赖的关系为:C—>B—>A。
那么我们执行项目C时,会自动把B、A都下载导入到C项目的jar包文件夹中。
这就是依赖的传递性。

二:依赖传递的排除

代码语言:javascript
代码运行次数:0
运行
复制
    如上,C—>B—>A。加入现在不想执行C时把A下载进来,那么我们可以用 <exclusions>标签。

三:依赖冲突与解决

依赖冲突:一个项目A,通过不同依赖传递路径依赖于X,若在不同路径下传递过来的X版本不同,那么A应该导入哪个版本的X包呢?

1、 第一声明优先原则

先声明的版本优先被引用jar包

2、 路径近者优先原则

A—>B—>C—>D—>E—>X(version 0.0.1)

A—>F—>X(version 0.0.2)

则A依赖于X(version 0.0.2)。

自己声明版本号最近。。。

3、 排除原则

代码语言:javascript
代码运行次数:0
运行
复制
<dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>2.3.24</version>
        <exclusions>
          <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
          </exclusion>
        </exclusions>
    </dependency>
代码语言:javascript
代码运行次数:0
运行
复制
通过<exclusions>标签排查具体的jar包

4、 版本锁定原则

代码语言:javascript
代码运行次数:0
运行
复制
<properties>
        <spring.version>4.2.4.RELEASE</spring.version>
        <hibernate.version>5.0.7.Final</hibernate.version>
        <struts.version>2.3.24</struts.version>
</properties>

<!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

7、私服 nexus

一、nexus的安装

nexus安装包自行下载。。

1、安装nexus:

2.命令窗口进入安装目录bin目录 输入nexus.bat install

3.启动服务: nexus.bat start

4.启动失败的解决方法: nexus中的wrapper.conf配置jdk的安装目录

5.登录nexus

用户名/密码 admin/admin123

仓库类型:

代码语言:javascript
代码运行次数:0
运行
复制
Virtual   虚拟仓库 

Proxy  代理仓库

Hosted  宿主仓库  本地仓库

Group 组

分模块开发 把dao层的jar包上传到私服 供service使用

二、上传dao

第一步:需要在客户端即部署dao工程的电脑上配置 maven环境,并修改 settings.xml 文件,配置连接私服的用户和密码。

此用户名和密码用于私服校验,因为私服需要知道上传都的账号和密码 是否和私服中的账号和密码 一致。

代码语言:javascript
代码运行次数:0
运行
复制
<server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
</server>
<server>
    <id>snapshots</id>
      <username>admin</username>
      <password>admin123</password>
</server>

第二步:配置项目pom.xml

配置私服仓库的地址,本公司的自己的jar包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为release则上传到私服的release仓库,如果版本为snapshot则上传到私服的snapshot仓库

代码语言:javascript
代码运行次数:0
运行
复制
<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>

注意:pom.xml这里 和 settings.xml 配置 对应!

第三步:执行deploy命令发布到私服

三、下载dao

修改maven的settings.xml

代码语言:javascript
代码运行次数:0
运行
复制
<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>  


  <activeProfiles>
    <activeProfile>dev</activeProfile>
  </activeProfiles>

第二步 删除本地仓库中的dao

第三步 update service工程,就可以了

参考博客:https://www.cnblogs.com/ygj0930/p/6628429.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.什么是maven
  • 2.maven的好处:
  • 3.maven仓库
  • 3.maven常用命令
  • 4、maven依赖管理
  • 5、maven的jar包依赖范围
  • 6、maven 传递依赖
  • 7、私服 nexus
    • 一、nexus的安装
    • 二、上传dao
    • 三、下载dao
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档