-
maven中的坐标和仓库
构件:插件<plugin>+jar包<dependency>
坐标概念:maven中,任何一个依赖、插件、都可以称为构件,所有构件通过坐标作为其唯一标识。
建议:创建maven项目时,尽量符合规范<gorupId>(公司域名反写+项目名)和<artifactId>(项目名-模块名),<version>(构建的版本号)这样看起来更清晰,并符合逻辑,也更方便搜索。
仓库概念:管理项目的构件,仓库分为本地仓库和远程仓库。本地仓库找不到我们的构件,则会去maven的中央仓库查找,查找到后就会下载到本地仓库中,如果远程仓库中也找不到就会报错,maven默认提供了一个中央仓库地址(apache-maven——>lib——>maven-model-builder.license.jar里的pom-4.0.0xml,maven提供的超级pom,所有Maven项目都会继承这个pom)。
中央仓库地址:基本上平常用的开源框架,这里都会有,它包含了绝大多数的Java开源项目(基本上平常开发常用的开源框架都可以找到)。
<layout>:表示使用默认布置。
<snapshots>下<enabled>为false:禁止下载快照的版本构件。
镜像仓库:A提供了和B一样的功能,Maven的中央仓库服务器都是位于国外的,有时可能由于一些原因导致无法访问外网,所以国内提供了它的镜像仓库,相对来说,更快、更稳定一些。
修改镜像仓库的位置:apache-maven——>conf——>setting.xml中mirror,配置了镜像仓库,就不会再访问中央仓库。
更改仓库位置:maven从远程仓库中下载的构件,默认存放在用户目录中C:\Users\Administrator\.m2\repository,一般不会把仓库放在C盘目录中,如果遇到一些问题这个数据可能就没了,所以一般在<localRepository>标签中放置的是其他盘下的仓库。并且把setting复制一份放到goujian文件夹下,更新maven版本,就不用在重新更改了,直接把这个copy过去即可。
查看全部 -
查看全部
-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"> <!--父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。 坐标包括group ID,artifact ID和 version。 --> <parent> <!--被继承的父项目的构件标识符 --> <artifactId /> <!--被继承的父项目的全球唯一标识符 --> <groupId /> <!--被继承的父项目的版本 --> <version /> <!-- 父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项 目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。 --> <relativePath /> </parent> <!--声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。 --> <modelVersion>4.0.0</modelVersion> <!--项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成, 如com.mycompany.app生成的相对路径为:/com/mycompany/app --> <groupId>asia.banseon</groupId> <!-- 构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;在某个 特定的group ID下,artifact ID也必须是唯一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源 码,二进制发布和WARs等。 --> <artifactId>banseon-maven2</artifactId> <!--项目产生的构件类型,默认jar,例如jar、war、ear、pom。插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型 --> <packaging>jar</packaging > <!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号 --> <version>1.0-SNAPSHOT</version> <!--项目的名称, Maven产生的文档用 --> <name>banseon-maven</name> <!--项目主页的URL, Maven产生的文档用 --> <url>http://www.baidu.com/banseon</url> <!-- 项目的详细描述, Maven 产生的文档用。 当这个元素能够用HTML格式描述时(例如,CDATA中的文本会被解析器忽略,就可以包含HTML标 签), 不鼓励使用纯文本描述。如果你需要修改产生的web站点的索引页面,你应该修改你自己的索引页文件,而不是调整这里的文档。 --> <description>A maven project to study maven.</description> <!--描述了这个项目构建环境中的前提条件。 --> <!--描述项目所属组织的各种属性。Maven产生的文档用 --> <organization> <!--组织的全名 --> <name>demo</name> <!--组织主页的URL --> <url>http://www.baidu.com/banseon</url> </organization> <!--该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。要获取更多信息,请看项目依赖机制。 --> <dependencies> <dependency> <!--依赖的group ID --> <groupId>org.apache.maven</groupId> <!--依赖的artifact ID --> <artifactId>maven-artifact</artifactId> <!--依赖的版本号。 在Maven 2里, 也可以配置成版本号的范围。 --> <version>3.8.1</version> <!-- 依赖类型,默认类型是jar。它通常表示依赖的文件的扩展名,但也有例外。一个类型可以被映射成另外一个扩展名或分类器。类型经常和使用的打包方式对应, 尽管这也有例外。一些类型的例子:jar,war,ejb-client和test-jar。如果设置extensions为 true,就可以在 plugin里定义新的类型。所以前面的类型的例子不完整。 --> <type>jar</type> <!-- 依赖的分类器。分类器可以区分属于同一个POM,但不同构建方式的构件。分类器名被附加到文件名的版本号后面。例如,如果你想要构建两个单独的构件成 JAR,一个使用Java 1.4编译器,另一个使用Java 6编译器,你就可以使用分类器来生成两个单独的JAR构件。 --> <classifier></classifier> <!--依赖范围。在项目发布过程中,帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。 - compile :默认范围,用于编译 - provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath - runtime: 在执行时需要使用 - test: 用于test任务时使用 - system: 需要外在提供相应的元素。通过systemPath来取得 - systemPath: 仅用于范围为system。提供相应的路径 - optional: 当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用 --> <scope>test</scope> <!--仅供system范围使用。注意,不鼓励使用这个元素,并且在新的版本中该元素可能被覆盖掉。该元素为依赖规定了文件系统上的路径。需要绝对路径而不是相对路径。推荐使用属性匹配绝对路径,例如${java.home}。 --> <systemPath></systemPath> <!--当计算传递依赖时, 从依赖构件列表里,列出被排除的依赖构件集。即告诉maven你只依赖指定的项目,不依赖项目的依赖。此元素主要用于解决版本冲突问题 --> <exclusions> <exclusion> <artifactId>spring-core</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> <!--可选依赖,如果你在项目B中把C依赖声明为可选,你就需要在依赖于B的项目(例如项目A)中显式的引用对C的依赖。可选依赖阻断依赖的传递性。 --> <optional>true</optional> </dependency> </dependencies> <!-- 继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,而是当子项目声明一个依赖(必须描述group ID和 artifact ID信息),如果group ID和artifact ID以外的一些信息没有描述,则通过group ID和artifact ID 匹配到这里的依赖,并使用这里的依赖信息。 --> <dependencyManagement> <dependencies> <dependency> ...... </dependency> </dependencies> </dependencyManagement> </project>
查看全部 -
maven介绍及环境搭建
Maven概念:基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。(提供了仓库的概念,统一帮助我们管理项目所依赖的jar包,避免环境配置不同,而不能再其他电脑上运行的问题)
maven工具下载地址:maven.apache.org
maven工具目录介绍:
bin目录:包含mvn的运行脚本,当在windows的命令行中输入mvn就会调用这些脚本。
boot目录:包含一个类加载器的框架,maven使用它加载自己的类库。
conf目录:配置文件目录,比如以后会经常用到settings.xml。
lib目录:maven运行时所用到的类库,除了maven自身使用的,还包含依赖第三方类库。
查看全部 -
maven:方便程序员管理和构建项目,不用再进行复杂的导包。
一、maven快速入门
1、maven的概念
2、如何在Windows下搭建maven的环境
3、举例体验maven的目录结构和构建过程
二、maven核心知识
1、如何自动创建maven目录、仓库的概念、如何更改仓库的位置
2、eclipse中如何安装maven插件、eclipse中如何创建maven项目
3、maven的生命周期、插件的概念、pom中常用的标签和坐标的概念
4、依赖和聚合和集成概念的举例说明
三、maven建立web项目
1、如何使用maven创建web项目
2、如何安装jetty插件,并将项目打包到jetty中。
查看全部 -
依赖冲突:
短路优先
先声明优先
查看全部 -
bge 的pom中也要加入parent标签,让bge从parent中继承junit
查看全部 -
在parent项目中,可以在dependencyManagement中添加统一的junit version
查看全部 -
compile: 默认的范围,编译测试运行都有效
provided:在编译和测试时有效,在运行时该dependency不会有效
runtime:在测试和运行的时候有效,例子:jdbc的驱动,在测试运行时有效,编译时无效
test:只在测试时有效,例子:junit
system:与本地系统向关联,可移植性差,和provided类似
import:导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置
查看全部 -
site用于生成项目站点
查看全部 -
default 是最核心的部分
查看全部 -
maven生命周期:
clean 清理项目
default 构建项目
site 生成项目站点
package运行时,compile和test会自动的运行
查看全部
举报