Maven笔记B
使用Maven构建Web应用
使用jetty-maven-plugin进行测试(开发阶段)
- 配置POM
<plugin>
<groupId>org.morbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactid>
<version>7.1.6.v20100715</version>
<configuration>
<!-- 每间隔10秒刷新,实现热部署效果 -->
<scanIntervalSeconds>10</scanIntervalSeconds>
<!-- 部署后的项目访问名http://ip:port/test -->
<WebAppConfig>
<contextPath>/test</contextPath>
</WebAppConfig>
</configuration>
</plugin>
- 配置settiing.xml
为简化命令调用,将org.mortbay.jetty添加到pluginGroups中。
<setting>
<pluginGroups>
<pluginGroup>org.mortbay.jetty</pluginGroup>
</plugingroups>
</setting>
- 使用
mvn jetty:run
mvn jetty:run -Djetty.port=9999
使用Cargo实现自动化部署
- standalone模式
将指定的web容器复制到指定位置,将项目部署至Web容器内并启动。
每次启动重复上述步骤 - existing模式
将项目部署至指定Web容器内并启动。
每次启动重复上述步骤
##版本管理 - release:prepare 准备版本发布 依次执行下列操作
- 检查项目是否有未提交的代码
- 检查项目是否有快照版本的依赖
- 根据用户的输入将快照版本升级为发布版
- 将POM中的SCM信息更新为标签地址
- 基于修改后的POM执行Maven构建
- 提交POM变更。
- 基于用户输入为代码打标签
- 将代码从发布版升级为新的快照版
- 提交POM变更
- release:rollback 回退
- release:perform 执行版本发布
灵活的构建
Maven为了支持构建的灵活性,内置了三大特性,即属性、Profile和资源过滤。
Maven属性
Maven属性分为以下6类
-
内置属性
主要有两个常用内置属性- ${basedir} 表示项目根目录,即包含pom.xml文件的目录
- ${version} 表示项目版本
-
POM属性
用户可以使用该类属性引用POM文件中对应元素的值,部分属性来源于超级POM。- ${project.build.sourcedirectory} 项目的主源码目录
- ${project.build.testSourceDirectory} 项目的测试源码目录
- ${project.build.directory} 项目构建输出目录
- ${project.outputDirectory} 项目主代码编译输出目录
- ${project.testOutputdirectory} 项目测试主代码编译输出目录
- ${project.groupId} 项目的groupId
- ${project.artifactId} 项目的artifactId
- p r o j e c t . v e r s i o n 项 目 的 v e r s i o n , 与 {project.version} 项目的version,与 project.version项目的version,与{version}等价。
- p r o j e c t . b u i l d . f i n a l N a m e 项 目 打 包 输 出 文 件 的 名 称 , 默 认 为 {project.build.finalName} 项目打包输出文件的名称,默认为 project.build.finalName项目打包输出文件的名称,默认为{project.artifactId}-${project.version}
-
自定义属性
用户可以在POM的元素下自定义Maven属性 -
Setting属性
与POM属性同理,用户使用以settings.开头的属性引用setting.xml文件中XML元素的值。- ${setting.localrepository} 指向用户本地仓库的地址
-
Jave系统属性
所有JAVA系统属性都可以使用Maven属性引用,用户可以使用mvn help:system命令查看所有的java系统属性。- ${user.home} 指向了用户目录
-
环境变量属性
所有环境变量都可以使用env.开头的Maven属性引用。用户可以使用mvn help:system命令查看所有的环境变量属性。- ${env.JAVA_HOME} 指代了JAVA_HOME环境变量的值.
资源过滤
使用Maven属性替代项目中资源配置文件中的可变属性。
1.在项目配置文件中使用Maven属性
database.jdbc.username=${db.username}
2.在pom.xml中设定属性值
<profiles>
<profile>
<id>dev</id>
<properties>
<db.username>root</db.username>
</properties>
</profile>
</profiles>
3.开启属性过滤功能
资源文件的处理是maven-resources-plugin插件做的事情,它默认的行为只是将项目主资源文件复制到主代码编译输出目录中,将测试资源文件复制到测试代码编译输出目录中。通过对其配置可以开启资源过滤功能。
Maven的默认maven-resources-plugin是在超级POM中。所以要对超级POM做如下修改
<resources>
<resource>
<!-- 主资源目录 -->
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<testResources>
<testResource>
<!-- 测试资源目录 -->
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</testResource>
</testResources>
4.执行
mvn clean install -Pdev