Maven项目构建工具
简介
Maven是Apache组织的一个开源项目,采用Java语言开发,用于构建Java项目。
优势
maven负责管理 jar依赖,项目工程中不需要jar,因此项目工程很轻量
功能
编译 测试 运行 打包 部署
安装
下载官网http://maven.apache.org/压缩包,解压后配置环境变量
配置文件
conf/settings.xml
localRepository 节点,指定maven仓库的本地磁盘地址
jar下载方式
本地仓库 → 远程仓库(私服或中央仓库http://mvnrepository.com/)
目录结构
src maven项目根目录
main 主目录
java java 代码目录
resources 配置文件目录
webapp web资源文件目录
test 测试目录
java java 测试代码目录
resources 测试配置文件目录
target 编译目录
命令
创建项目
创建 java 项目
mvn archetype:generate
-DgroupId={project.groupId}
-DartifactId={project.artifactId}
-Dversion={project.version}
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
创建 java web 项目
mvn archetype:generate
-DgroupId={project.groupId}
-DartifactId={project.artifactId}
-DarchetypeArtifactId=maven-archetype-webapp
-Dversion={project.version}
-DinteractiveMode=false
例如:
mvn archetype:generate -DgroupId=org.kenny.demo -DartifactId=maven -DarchetypeArtifactId=maven-archetype-webapp -Dversion=1.0 -DinteractiveMode=false
编译项目,所有编译好的文件都放在target文件夹
mvn compile
清理编译文件,删除target文件夹
mvn clean
测试项目,运行test目录下的JUNIT测试
mvn test
打包项目
mvn package
java项目会打包成jar,java web项目会打包成war
打包后安装到本地仓库
mvn install
部署到远程仓库
mvn deploy
生命周期
1. clean生命周期 clean
2. default生命周期 compile test package install deploy
3. site生命周期 site
jar 依赖范围 <scope></scope>
1. compile (默认)
2. runtime 不参与编译,如 JDBC 驱动包
3. provided 不参与打包
4. test 不参与打包
依赖传递
1. 排除依赖
<exclusions></exclusions>
2. 版本锁定
<dependencyManagement>
</dependencyManagement>
POM继承
创建一个<packaging>pom</packaging>的maven项目
子项目中使用<parent></parent>实现继承
nexus私服
官网 https://www.sonatype.com/nexus-repository-sonatype
配置文件 etc/nexus-default.properties
基于jetty的maven私服,默认端口号8081
启动命令 nexus.exe /run
仓库类型
1. 代理仓库
2. 中央仓库
3. 宿主仓库(本地仓库)
4. 仓库组
打包项目并部署到私服
修改 conf/settings.xml,在servers节点中加入
<server>
<id>kenny-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>kenny-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
在项目的pom.xml中加入
<distributionManagement>
<repository>
<id>kenny-releases</id>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>kenny-snapshots</id>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
执行deploy命令部署到nexus
引用私服 jar
在maven的 conf/settings.xml 配置文件的profiles节点中加入
<profile>
<id>env-dev</id>
<repositories>
<repository>
<id>kenny-repo</id>
<url>http://localhost:8081/repository/maven-public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件-->
<pluginRepository>
<id>public-repo</id>
<url>http://localhost:8081/repository/maven-public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
在 profiles 节点后加入,激活配置
<activeProfiles>
<activeProfile>env-dev</activeProfile>
</activeProfiles>