Maven
2019-10-30 13:26:12 0 举报
AI智能生成
maven操作笔记
作者其他创作
大纲/内容
部署项目
手动发布web项目
cargo
Tomcat本地部署
Tomcat远程部署
常用命令
compile 编译
clean 删除target/
test test case junit/testNG
package 打包
install 把项目install到local repo
deploy 发本地jar发布到remote
mvn clean test 单元测试
mvn clean package 项目打包
mvn clean install 生成jar
mvn compile 编译class
mvn clean 清除编译目录也就是target文件夹
生命周期
clean
compile
site
生命周期图
优势
约定优于配置
简单
测试支持
构建简单
CI
插件丰富
插件
jetty插件
sql插件
maven source plugin插件
源码打包插件
不用插件,用这个命令也一样clean source:jar
maven-compiler-plugin插件
改变编译环境
区分开发环境和生产环境
maven-rar-plugin插件
将项目打包成rar
mav-surefire-plugin插件
测试一些不是符合规范的测试类
建议还是按规范编写
测试覆盖率
corbertura-maven-plugin插件
pom.xml
groupId 公司域名
artfactId 功能命名
version 版本号
packaging 打包方式(jar、war)
Dependency 打包环境
Type 默认jar
scope 打包环境
compile 编译 例如spring-core
test 测试
provided编译 例如 servlet
runtime运行时 例如JDBC驱动实现
system 本地一些jar 例如短信jar
dependencyManagement
只能出现在父pom
作用:统一版本号
声明 (子POM里用到再引)
exclusions
排除包
依赖仲裁
最短路径原则
加载先后原则
自定义插件
新建一个Maven项目
修改pom.xml
在版本号下面添加packaging标签 maven-plugin
添加插件
org.apache.maven
groupId org.apache.maven
artifactId maven-plugin-api
version 3.5.0
scope provided
org.apache.maven.plugin-tools
groupId org.apache.maven.plugin-tools
artifactId maven-plugin-annotations
version 3.5
scope provided
创建类
继承AbstractMojo
实现AbstartctMojo的方法,在方法内随便打印一句话
在类上添加注解Mojo
定义name goal调用的名字 定义有意义的
定义defaultPhase LifecyclePhase.PACKAGE
执行命令
mvn clean install
如果报错 先尝试修改maven下载地址注意重启maven 修改后还不行再运行后面的命令
命令行运行mvn install
命令行mvn compiler:compile
命令行运行mvn org.apache.maven.plugins:maven-compiler-plugin:compile
命令行运行mvn org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile
引入写好的插件
build 标签 plugins标签
plugins标签 plugin标签
plugin标签 groupId、artifactId、version
groupId 插件的groupId
artifactId 插件的artifactId
version 插件的artifactId
现在插入的这插件 执行任何mvn命令都无法执行只能双击运行
让执行mvn命令能够运行插件
在plugin添加标签executions execution标签
execution phase、goals
phase package
goals goal
goal 上面注解命名的name
如果需要使用参数
在插件类上添加一个成员变量 变量标注注解 Parameter
传产时在execution标签中添加configuration标签
configuration标签中添加类中被标Parameter注解的变量名
如要传入List参数
在configuration标签中添加类中被标Parameter注解的List变量名
再在里面定义任意名字的标签,每一个标签代表一个参数,标签内放入值
使用maven自带属性
在插件类上标注了Parameter注解的参数,给这个注解赋值property
当给赋值args property="args"
那么可以在命令行传入参数 如 mvn install -Dargs=123
更多访问https://maven.apache.org/guides/plugin/guide-java-plugin-development.html
profile
使用场景
分环境打包 dev/test/pro
使用方式
在父pom文件中定义标签profiles
profiles中可以有多个profile
在profiles中定义profile
profile可以定义id、properties、activation
id一般为dev、test、pro
properties中可以定义 profiles.active 标签 profiles.active相当于定义一个参数
profiles.active一般和id保持一致
activation中也可以定义activeByDefault
activeByDefaut设置为true代表为默认 打包方式以默认为标准
经过上面的步骤还是不行的,需要去build中定义
在build中添加resources标签
在resources下添加两个resource标签
第一个resource标签在标签内添加directory标签和excludes标签
directory标签内写入 配置文件的目录 如${basedir}/src/main/resources ${basedir}是maven自带属性 代表工程的主目录
excludes标签中可以添加exclude标签
exclude标签写入需要去掉的文件,从directory定义的目录开始 如conf/**
第一个resource标签代表把src/main/resources/conf/**去掉
第二个resource标签 在标签内添加directory
directory标签写入src/main/resources/conf/${profiles.active} ${profiles.active}就是之前定义的参数
第二个标签代表把conf目录下的${profiles.active}这个文件夹的内容再添加进来
当配置完成后
在命令行输入 mvn clean install -P test
这样打包出来的是保留test的配置文件
-P后面跟什么就打包什么环境的配置文件
在setting.xml中也可以用同样的方式配置
在activeProfiles标签的activeProfile标签中输入配置的对应id
这样 maven会自动的使用对应id的maven仓库
仓库
下载地址 http://www.sonatype.org/nexus/
基础
初级使用
maven安装
下载maven
https://maven.apache.org/download.cgi
解压maven
将下载好的解压即可
设置环境变量MAVEN_HOME=xxxxxx;path=;%MAVEN_HOME%\bin;
指向解压存放的目录
有的系统使用M2=xxxxxx; path=;%M2_HOME%\bin;
指向解压存放的目录
上面的path Windows在path中添加
Linux下在.bash_profile中添加
MAVEN_OPTS
maven底层也是java -jar 运行的,带参数的话建议配置MAVEN_OPTS
命令行echo %M2_HOME%或echo %MAVEN_HOME%检查路径是否正确
mvn -version 检测环境是否配置
mvn项目的存放目录
src\main\java放源文件
src\main\resources存放资源文件
src\test\java放测试文件
src\test\resources放测试资源文件
target存放打包的文件和测试相关文件
POM(project object model,项目对象模型)
本地默认maven仓库
C:\Users\mocha\.m2\repository
修改maven仓库路径
修改setting.xml
<localRepository>D:\1-maven_repository</localRepository>
配置setting.xml下载地址 两个地址都可以用也可以一起用
http://maven.aliyun.com/nexus/content/groups/public/
http://maven.aliyun.com/nexus/content/groups/public/
http://maven.oschina.net/content/groups/public/
附属图片
坐标
G : groupId
公司域名反过来写
A : artifactId
功能命名
V : version 版本号
0.0.1-SNAPSHOT
总版本号.分支版本号.小版本号-里程碑版本号
总版本号:一般指框架中有大变动
分支版本号:增加了一些功能
小版本号:在分支版本号基础上修复了一些bug
里程碑版本号
snapshot(开发未测试)
alpha(内测版本)
beta(公测版本)
release(稳定版)
ga(generally available)用户可放心使用版本
未发布推荐1.0-SNAPSHOT
mvn clean package -U (强制拉一次)
软件版本的生成
依赖关系
把一个项目拆分模块,多人开发
按业务拆分
用户模块
账单模块
支付模块
按开发模块拆分
user-core
user-service
user-dao
依赖范围
Service依赖于dao,dao依赖于core。service对core是传递性依赖。
compile
传递性依赖的范围和第一直接依赖的范围一致
编译依赖范围。对编译、测试、运行都有效。
test
依赖不会传递
只对测试有效
provided
只传递第一依赖范围也为provided的依赖,传递依赖范围也是provided
对编译和测试有效
打war包时,不会打包
runtime
传递性依赖的范围与第一直接依赖的范围一致
只对运行有效
聚合
maven pom项目
maven module项目
继承
私有仓库
类型
Hosted
Releases
Snapshot
3rd party
中央仓库里的没有包
一般指我们内部开发,只对内网,可以上传
Virtual
proxy
central
中央仓库下载的包全部放到此下
apache snapshots
apache专属存储
codehaus snapshots
codehaus专属存储
group
将多个工厂分成组
方便操作
场景分析
配置私有仓库
只考虑自己的当前项目,不考虑其他项目
考虑当前项目,又考虑以后开发情况
注意:不要配置maven安装目录下的setting.xml
配置镜像
所有开发人员通过我设置的地址访问仓库
配置在settings的Mirror节点
D:\maven\apache-maven-3.1.0\apache-maven-3.1.0\lib\maven-model-builder-3.1.0.jar
修改jar包内\org\apache\maven\model\pom-4.0.0.xml
便于维护工厂
一种约定
发布项目到私有仓库
POM设置
授权
为自己的项目搭建专属性仓库
自由主题
0 条评论
下一页