maven配置全局变量(maven全局配置文件路径为)
maven3.X学习系列四 releases和snapshots的版本控制
meta charset="utf-8"
我们知道 snapshots 版本是不稳定的版本,releases是稳定的版本。生产环境与开发环境应该使用不同的仓库来分离。之前说过版本号带有 -snapshots nexus会自动放入snapshots 仓库,反之放入releases。
我们只需要开发环境打包的时候 带上 -snapshots 而生产环境的时候不带就可以做到两个环境的分离。下面来具体说说
1、profiles
maven profiles 的可以定义不同环境的参数变量。
一个profile 代表一个环境。profile 中有一个 properties 参数是一个自定义。它属于全局变量,
在其他地方使用时用${version.suffix} 在项目使用时会进行替换。
在pom.xml 配置全局变量
这样我们的我们的版本就随着 环境的不同而不同了。
在dev 环境中 我们的版本是1.21-SNAPSHOTS
在prod环境中我们的版本是1.2.1
这样我们的生产环境和开发环境的jar包 就分离开了。
在打包的时候 可以加上-P profile.id
例如 mvn deploy -P prod 生产环境
mvn deploy -P dev 开发环境
2、分角色打包
通过profile 我们已经可以实现不同环境使用不同的仓库,但是每个人都有打包的权利依然很难很好的控制版本,尤其是releases 仓库。之前我们说过nexus 的权限控制,这里我们需要将不同环境的人的打包权限控制。例如测试的人员打releases 的包 而开发人员打snapshots 的包。
这里需要创建两个账号 、
一个是开发人员角色(有snapshots 新增的权限)
一个是测试人员角色(有releases 新增的权限)
只有admin 有修改删除的权限。
修改pom.xml其中配置
将要打包到的地址 在profile中配置,
开发人员 maven setting.xml的配置的是开发人员的账号
测试人员 maven setting.xml的配置的是测试人员的账号
这样就可以做到不同环境,不同角色 releases和snapshots的版本控制。
测试人员打包 可以集成在jenkins上
可以参考这篇
maven全局配置文件路径为
conf/settings.xml文件。根据查询maven全局配置的相关资料显示,maven全局配置文件路径为conf/settings.xml文件。Maven的全局配置文件是Maven安装目录conf/settings.xml文件,该文件可以配置仓库、代理、profile、镜像、插件等。
如何在环境变量中配置maven环境变量
myeclipse自带maven(Maven4MyEclipse)
创建项目:
新建Web Projects项目,在新建的页面上打上maven的勾。新建的项目里会多出个pom.xml文件
为项目添加依赖包:
右键项目,选择Maven4MyEclipse--add Dependency。输入包名,maven会从中央库中查找。
创建自己的依赖包:
在pom.xml文件上右键,选择run as--maven install。该命令将项目发布到本地的资源库中。
其他项目需要用到这个资源,输入资源名称就可以找到。
手动安装maven
Maven 2.2.1为例 (3.0.3没下下来)
下载地址:
解压maven到安装的位置
如D:\
设置maven环境变量
配置maven环境之前要确定配置好了jdk的环境
maven_home=D:\apache-maven-2.2.1
PATH=%maven_home%\bin
测试maven是否成功
mvn -v
构建myeclipse项目
建一个web项目
mvn archetype:create -DgroupId=com.myframe -DartifactId=myframe -DarchetypeArtifactId=maven-archetype-webapp
-DgroupId 生成pom的groupidcom.myframe/groupid节点,本工程生成的jar包给其它工程依赖时用。
-DartifactId 生成的文件夹名,也就是Eclipse中web工程的名字
生成Eclipse项目
mvn eclipse:myeclipse
通过myeclipse导入生成的myeclipse项目
配置本地Repository
本地Repository的默认值是${user.home}/.m2/repository/,可在user configuration(${user.home}/.m2/setting.xml)中改变本地Repository
localRepositoryD:/.m2/repository/localRepository 将maven的jar仓库放在D:/.m2/repository文件夹下
maven常用命令
mvn archetype:create :创建 Maven 项目
mvn compile :编译源代码
mvn test-compile :编译测试代码
mvn test : 运行应用程序中的单元测试
mvn site : 生成项目相关信息的网站
mvn clean :清除目标目录中的生成结果
mvn package : 依据项目生成 jar 文件
mvn install :在本地 Repository 中安装 jar
mvn eclipse:eclipse :生成 Eclipse 项目文件
pom.xml文件节点介绍
project :文件的根节点 .
modelversion : pom.xml 使用的对象模型版本
groupId :创建项目的组织或团体的唯一 Id
artifactId :项目的唯一 Id, 可视为项目名
version :产品的版本号
packaging :打包物的扩展名,一般有 JAR,WAR,EAR 等
name :项目的显示名,常用于 Maven 生成的文档
url :组织的站点,常用于 Maven 生成的文档
description :项目的描述,常用于 Maven 生成的文档
classifier : 分类
outputDirectory : 定义输出文件夹
type : 相应的依赖产品包形式,如jar,war
scope : 用于限制相应的依赖范围,包括以下的几种变量
compile :默认范围,用于编译
provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath
runtime:在执行时,需要使用
test:用于test任务时使用
system:需要外在提供相应得元素。通过systemPath来取得
systemPath : 仅用于范围为system。提供相应的路径
optional : 标注可选,当项目自身也是依赖时。用于连续依赖时使用
还有两个问题没解决:
1.用maven构建的工程导入myeclipse中是java工程
2.myeclipse8.5自带maven插件创建的web项目怎么构建maven目录结构
3.导入的myeclipse工程没有Maven Dependencies依赖包
jenkins mvn command not found
部署完jenkins,部署一个自由风格的job,
构建过程的设置如下:
构建的报如下错误:
但是此时我的jenkins所在的机器上是已经安装了maven的。
回到jenkins主页面,
系统管理-系统配置
找到下面的配置,为maven添加全局变量
点击保存,再次进行构建的时候,问题得到解决。