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. 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 将生成的站点文档部署到特定的服务器上
- 生命周期严格按照顺序执行