Maven详解

maven命令

mvn -version --查看maven安装版本

切换至要打包的目录

mvn compile --编译 mvn package --打包 mvn clean --清空编译的目录 maven运行测试类
mvn test 测试不通过时,打包无法进行,这时需要添加参数 mvn package -Dmaven.test.skip=true

  • ** maven将打好的包放到本地仓库**

    mvn install --打好的包放到本地仓库 clean deploy --将打好的 包上传到本地仓库

maven 机制

maven 远程仓库配置

查看找路径 %M2_HOME%/lib/maven-model-build 找到pom文件 远程仓库配置 找到maven的setting文件

maven pom文件的dependency的 scope

<scope>test</scope>  作用域在测试环境
<scope>provided</scope> (默认) 编译和运行时会生效
<scope>provided</scope> 编译时生效,打包时不生效,例如引用servlet
<scope>runtime</scope> 编译时不生效,打包时生效
项目版本标准
  1. 1  .   1.  SNAPSHOT
    

| | | | 大版本 分支 小版本 状态(BEAT,RELEASE)

maven项目 聚合

新建一个父工程,在pom文件上,将子model导入

<project  ...>
 <modelVersion></modelVersion>
 <groupId></groupId>
 <artifactId></artifactId>
 <version><version>
 <packaging>pom</packaging>
 <modules>
   <module>module1</module>
   <module>module2</module>
   <module>module3</module>
 </modules>
</project>

同级别,依赖冲突时,位置靠前面的依赖生效。依赖层级短的优先。

  • 查看依赖继承关系,可以查看Dependency Hierarchy 查看

Maven 私服nexus搭建与使用

nexus 搭建

Maven用戶与各种服务器之间的关系

  • 仓库的分类 Group: 分组 Hosted: 私有 - 第三方仓库: - snapshots:本地项目的快照仓库 - Releasase:本地项目正式发布版本 Proxy: 公网发布的jar文件 - 中央仓库 Central apache的快照仓库

搭建命令

nexus 下载地址:
https://sonatype-download.global.ssl.fastly.net/nexus/oss/nexus-2.14.5-02-bundle.tar.gz
解压并设置环境变量
#解压
shell>tar -zxvf nexus-2.14.5-02-bundle.tar.gz
#在环境变量当中设置启动用户
shell> vim /etc/profile
#添加profile文件。安全起见不建议使用root用户,如果使用其它用户需要加相应权限
RUN_AS_USER=root
配置启动参数:
shell> vi ${nexusBase}/conf/nexus.properties
#端口号
application-port=8081
#仓库地址
nexus-work=${bundleBasedir}/../sonatype-work/nexus  

启动与停止nexus
#启动
shell> ${nexusBase}/bin/nexus start
#停止
shell> ${nexusBase}/bin/nexus stop
登录nexus 界面
地址:http://{ip}:8081/nexus/
用户名:admin
密码:admin123

手动更新索引
前往maven中央仓库下载indexer-cli-5.1.1.jar
http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.apache.maven.indexer%22%20AND%20a%3A%22indexer-cli%22
下载索引文件
http://repo.maven.apache.org/maven2/.index/
nexus-maven-repository-index.gz
nexus-maven-repository-index.properties
解压索引引文件
java -jar indexer-cli-5.1.1.jar -u nexus-maven-repository-index.gz -d indexer 
拷贝索引文件至索引目录
{nexus-home}/sonatype-work/nexus/indexer/central-ctx

<mirrorOf>*</mirrorOf> //只允许在该仓库中下载,覆盖原先的 条件

项目中配置私服

项目中设置私服 配置文件中配置私服 修改settings配置文件 配置镜像(仓库下载地址) 配置可以使用的仓库 activeProfile 激活数据集

配置对应的仓库进行上传jar包

项目的pom文件 <distributionManagement> <id>XXX</id> <name>XXX</name> <url>XXX.XXX.XXX.XXX</url> <!--仓库地址--> </distributionManagement> 执行命令

clean deploy --将项目打包,jar包上传到仓库

之后进入搭建私服Nexus私服网址,的deploment账号,设置密码。 设置mave的settings文件,配置账号密码

<servers>
  <server>
  <id>{上传的地址id}</id>
  <useranme>{配置的username}</username>
  <password>XXX</password>
  </server>
</servers>

Maven插件应用

使用插件,pom.xml中生命插件(生成源码的插件) Phase:生命周期的阶段 Goals:具体的目标 configuration:配置

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-compiler-plugin</artifactId> 
<configuration> 
<source>1.7</source> 
<target>1.7</target> 
</configuration> 
</plugin> 

插件的配置修改

Maven的生命周期

Phase:生命周期的阶段 > 生命周期 lifecycle

clean lifecycle : 构建前的清理工作
	•	pre-clean 执行一些需要在clean之前完成的工作
	•	clean 移除所有上一次构建生成的文件
	•	post-clean 执行一些需要在clean之后立刻完成的工作
Default lifecycle: 构建的核心部分,编译、打包、部署、上传
  **•	validate 项目及所必须的环境验证**
	•	initialize 初始化构建状态,例如设置属性或创建目录。
	•	generate-sources 生成次源包
	•	process-sources
	•	generate-resources
	•	process-resources 复制并处理资源文件,至目标目录,准备打包。
  **•	compile 编译项目的源代码。**
	•	process-classes
	•	generate-test-sources 
	•	process-test-sources 
	•	generate-test-resources
	•	process-test-resources 复制并处理资源文件,至目标测试目录。
	•	test-compile 编译测试源代码。
	•	process-test-classes
  **•	test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。**
	•	prepare-package
  **•	package 接受编译好的代码,打包成可发布的格式,如 JAR 。**
	•	pre-integration-test
	•	integration-test
	•	post-integration-test
  **•	verify**
  **•	install 将包安装至本地仓库,以让其它项目依赖。**
  **•	deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。**
site lifecycle:项目报告生成,站点文档生成
	•	pre-site 执行一些需要在生成站点文档之前完成的工作
	•	site 生成项目的站点文档
	•	post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
	•	site-deploy 将生成的站点文档部署到特定的服务器上
- 生命周期严格按照顺序执行

转载于:https://my.oschina.net/u/3945595/blog/3067864

<think>嗯,用户让我介绍一下XML语法和Maven详解。首先,我需要确认用户的需求。他们可能刚开始学习Java或者项目构建工具,所以需要基础的知识。XML和Maven通常在Java项目中一起使用,用户可能是在学习如何配置Maven项目时遇到了XML文件,比如pom.xml。因此,用户需要了解XML的基本结构,以便能够理解和编辑Maven的配置文件。 接下来,我得考虑如何组织信息。用户可能希望分开两部分,先XML再Maven,但也要说明它们之间的联系。XML部分需要涵盖基本语法,比如标签、元素、属性、嵌套规则等,可能还要提到常见的错误和验证。Maven部分则需要解释它的作用、核心概念如POM、生命周期、依赖管理、插件和仓库。同时,要举例说明pom.xml的结构,这样用户能更直观地理解。 另外,用户可能不知道Maven为什么要用XML,所以需要指出XML的结构化特性适合做配置,而Maven利用这一点来管理项目。还要注意用户的潜在需求,比如他们可能想通过例子学习如何配置依赖或插件,或者解决常见的构建问题,所以提供简单的示例会有帮助。 需要避免使用过于专业的术语,保持解释简单明了。例如,在解释Maven生命周期时,用阶段(phase)和目标(goal)的区别,可能需要用类比或步骤来说明。同时,提醒用户常见的注意事项,比如依赖冲突,或者如何添加仓库,这些是实际使用中容易遇到的问题。 最后,总结部分要强调两者的结合,确保用户明白XML在Maven配置中的作用,以及掌握这些知识对项目管理的帮助。可能还需要考虑用户下一步的学习方向,比如推荐学习Maven命令或高级配置,但根据问题范围,暂时不需要扩展,保持回答的针对性。</think>好的!以下是对 **XML 语法**和 **Maven** 的详细介绍,内容分为两部分,便于理解。 --- ### 一、XML 语法详解 **XML(eXtensible Markup Language)** 是一种标记语言,用于存储和传输结构化数据。它的核心特点是可扩展性(标签可自定义)和自描述性。 #### 1. 基本语法规则 - **声明**:XML 文件通常以声明开头,定义版本和编码: ```xml <?xml version="1.0" encoding="UTF-8"?> ``` - **根元素**:必须有且仅有一个根元素,所有其他元素嵌套在根元素内。 ```xml <root> <!-- 其他内容 --> </root> ``` - **标签**: - 标签区分大小写,必须闭合(成对或自闭合)。 - 成对标签:`<tag>内容</tag>` - 自闭合标签:`<tag />` - **属性**:属性值必须用引号包裹: ```xml <person id="001" role="admin">Tom</person> ``` - **注释**:`<!-- 注释内容 -->` - **特殊字符**:需转义,如 `<` → `<`、`>` → `>`。 #### 2. XML 示例 ```xml <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="IT"> <title>Java Programming</title> <author>John Doe</author> <price>49.99</price> </book> <book category="Fiction"> <title>XML for Beginners</title> <author>Jane Smith</author> <price>29.99</price> </book> </bookstore> ``` #### 3. XML 用途 - 配置文件(如 Maven 的 `pom.xml`、Spring 的配置)。 - 数据交换格式(如 SOAP、RSS)。 - 结构化数据存储。 --- ### 二、Maven 详解 **Maven** 是 Apache 的开源构建工具,主要用于 Java 项目管理。其核心功能包括: - **依赖管理**(自动下载库文件) - **构建生命周期**(编译、测试、打包等) - **项目标准化**(目录结构、配置约定) #### 1. Maven 核心概念 - **POM(Project Object Model)**: - 项目配置的核心文件是 `pom.xml`,定义了项目信息、依赖、插件等。 - 示例 `pom.xml` 结构: ```xml <?xml version="1.0" encoding="UTF-8"?> <project> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>my-project</artifactId> <version>1.0.0</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project> ``` - **坐标(Coordinates)**: - 通过 `groupId`(组织标识)、`artifactId`(项目标识)、`version` 唯一标识一个依赖。 - **仓库(Repository)**: - **本地仓库**:本地机器上的依赖缓存(默认在 `~/.m2/repository`)。 - **中央仓库**:Maven 官方维护的公共仓库([search.maven.org](https://search.maven.org/))。 - **私有仓库**:公司内部搭建的仓库(如 Nexus、Artifactory)。 - **生命周期(Lifecycle)**: - 默认生命周期包含多个阶段(phase),如: - `compile`(编译) - `test`(运行测试- `package`(打包为 JAR/WAR) - `install`(安装到本地仓库- `deploy`(部署到远程仓库- **插件(Plugins)**: - 通过插件执行任务,例如 `maven-compiler-plugin` 用于编译代码。 #### 2. Maven 常用命令 ```bash mvn clean # 清理 target 目录 mvn compile # 编译代码 mvn test # 运行测试 mvn package # 打包项目 mvn install # 安装到本地仓库 mvn deploy # 部署到远程仓库 ``` #### 3. Maven 目录结构 Maven 使用约定优于配置,标准目录结构如下: ``` my-project/ ├── src/ │ ├── main/ │ │ ├── java/ # Java 源代码 │ │ └── resources/ # 配置文件 │ └── test/ │ ├── java/ # 测试代码 │ └── resources/ └── pom.xml ``` --- ### 三、XML 与 Maven 的关系 - Maven 使用 XML 格式的 `pom.xml` 文件描述项目配置。 - XML 的结构化特性非常适合定义复杂的依赖关系和构建流程。 --- ### 四、注意事项 1. **XML 格式必须严格正确**(如标签闭合、属性引号)。 2. **Maven 依赖冲突**:可通过 `<exclusions>` 排除冲突依赖。 3. **镜像仓库配置**:修改 `settings.xml` 加速依赖下载。 希望以上内容能帮助你理解 XML 和 Maven!如果需要进一步示例或细节,请随时告诉我。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值