系统签名

0 未经授权,禁止转载了解课程
课程介绍
讨论{{interaction.discussNum ? '(' + interaction.discussNum + ')' : ''}}
适合人群
Java工程师,Java初学者
你将会学到
工程依赖管理视频教程
课程简介

1  版本控制工具应该具备的功能

image.png

2  版本控制简介

2.1版本控制

工程设计领域中使用版本控制管理工程蓝图的设计过程。在 IT 开发过程中也可以

使用版本控制思想管理代码的版本迭代。


2.2版本控制工具

思想:版本控制

实现:版本控制工具

集中式版本控制工具:

CVS、SVN、VSS……


Maven的核心概念。

    1. Maven 插件和目标  (Plugins and Goals)

        -- Maven构建项目由一组标准插件组成。

        -- 一个maven插件是由一个或者多个目标组成的。

        -- 一个目标是一个明确的任务,它可以作为单独的目标运行,

        或者作为一个大的构建的一部分和其它目标一起运行。

        一个目标是Maven中的一个“工作单元”。

        目标的例子包括Compiler插件中的compile目标,它用来编译项目中的所有源文件,

        或者Surefire插件中的test目标,用来运行单元测试。

  

    2. Maven 坐标 (Coordinates)

        坐标解释(groupId、artifactId、version):

        groupId: 创建这个项目的组织名称(一般为组织的域名反写)

        artifactId: 表示一个单独项目的唯一标识符(项目名或jar包)

        version:项目的版本号

        注意:groupId、artifactId、version它们标识了一个唯一的项目。

    3. Maven 资源库(Repositories) 

    什么是Maven资源库? 资源存储的地方,即所有项目的jar库,插件库。

    Maven库中有三种类型

    -- local : 本地库 

       C:/MyLocalRepository

   -- remote : 远程仓库(代理仓库也就是自已的私服)

    -- central : 中央存储库(http://repo1.maven.org/maven2/)

    Maven的依赖jar包搜索序列

  

    第一种(如果没有配置远程仓库):本地库 ---> 中央库

    第二种(有配置远程仓库):本地库 ---> 远程库 ---> 中央库

    4. Maven 依赖管理 (Dependency Management)

        a、Transitive Dependency (传递依赖)

            你需要A jar包, A又依赖B ,你申明了A ,B就会自动拉取下来。

            你的项目依赖于A,A又依赖于B。你的项目是否要声明你依赖于B?

            Maven的回答是它帮你自动管理这种依赖的传递,

            你不需要声明你依赖于B,由Maven来做。

        b、Dependency Scope (依赖范围)

            举例来说,你开发时需要做测试,你需要依赖于junit的jar,但是部署应用时并不需要

它,

            因为单元测试不会在生产环境上跑,也就是说最终打包的jar或者war不包含junit的

jar。

            又如你开发web程序,你的servlet/jsp进行编译需要依赖于servlet-jsp的标准

api(J2EE的jar),

            但是部署时也是不需要它的,因为你的应用服务器肯定有这些东西。

        因此,Maven考虑了6中可能的scope供选择:

        - compile: 默认的scope。编译、测试、打包全都需要。compile参与依赖传递,就是说,

        你的项目A依赖于B(依赖scope是compile),项目C依赖于你的项目A,那么C也就依赖于B。

        - provided: 表示JDK或者容器会在Runtime时提供这些(jar),

        如上面说到的servlet api。provided的东西在编译和测试时会用到,不参与传递依赖。

        - runtime: 表示编译时不需要,但测试和运行时需要,最终打包时会包含进去。

        - test: 只用于测试阶段(测试的编译和测试的运行),典型的就是junit的jar。

        - system: 和provided类似,但要求jar是你的系统里已有的,

        不会在repository里找,如rt.jar,tools.jar这些。

        c. 解决依赖冲突(排除指定的依赖)

     

       

          servlet-api

          javax.servlet

       

       

     

   5. 只打jar包: mvn jar:jar

   6. 只打war包: mvn war:war


展开更多
发布
头像

{{ item.user.nick_name }} {{ EROLE_NAME[item.user.identity] }}

置顶笔记
讨论图
{{ item.create_time }}回复
  • 删除

    是否确认删除?

    确认
    取消
  • {{ item.is_top == 1 ? '取消置顶' : '置顶'}}

    已有置顶的讨论,是否替换已有的置顶?

    确认
    取消
{{ tag.text}}
头像
{{ subitem.user.nick_name }}{{ EROLE_NAME[subitem.user.identity] }}
{{ subitem.create_time }}回复
删除

是否确认删除?

确认
取消
发布
{{pageType === 'video' ? '讨论区抢占沙发,可获得双倍学分' :'讨论区空空如也,你来讲两句~'}}
发布
{{tips.text}}
{{ noteHeaderTitle }} 笔记{{ hasMyNote ? '我的笔记' : '记笔记' }}
{{ hasMyNote ? '我的笔记' : '记笔记' }}
优质笔记
更新于:{{ $dayjs.formate('YYYY-MM-DD HH:mm:ss', item.last_uptime*1000) }}
头像
{{ detail.username }}

公开笔记对他人可见,有机会被管理员评为“优质笔记”

{{ noteEditor.content.length }}/2000

公开笔记
保存
提问

讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。

记录时间点
记录提问时视频播放的时间点,便于后续查看
公开提问
提交