开发项目,需要下载各种各样的jar包,有用的,没用的,冲突的,项目还没有开始开发就臃肿的可以不要不要的.
项目管理工具,Maven,Ant,gradle…
bin:包含了mvn的运行脚本
boot:包含了一个类加载器的框架
vim /etc/profile //配置环境变量
#maven set
export M2_HOME=/home/juedaiyuer/apache-maven-3.3.9
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
保存
source profile //不用重启
mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /home/juedaiyuer/apache-maven-3.3.9
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: /usr/jdk1.8.0_65/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.19.0-56-generic", arch: "i386", family: "unix"
src
-main
-java
主代码
-test
-java
测试代码
-resources(资源文件)
//maven测试中用到
mkdir -p src/main/java test/java
/main/java/maven 目录
package maven.example01;
public class HelloWorld
{
public String sayHello()
{
return "Hello World!";
}
}
/test/java/maven
package maven.example01;
import org.junit.*;
import org.Assert.*;
public class HelloWorldTest{
@Test
public void testHello()
{
Assert.assertEquals("Hello World!",new HelloWorld().sayHello());
}
}
配置pom.xml
在struts文件的lib,struts2-core文件(jar),META-INF/maven/org.apache.struts/struts2-core/pom.xml复制过来
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>maven</groupId>
<artifactId>maven-example01</artifactId>
<version>0.0.1SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
</project>
调试
mvn -v
mvn compile 项目编译
mvn test 运行
mvn package 打包
mvn clean 删除target
mvn install 安装jar包到本地仓库
自动建立目录骨架
archetype插件用于创建符合maven规定的目录骨架
mvn archetype:generate 按照提示进行选择
mvn archetype:generate -DgroupId yourgroup -DartifactId yourartifactId -Dversion yourversion -Dpackage yourpackge
pom.xml配置文档
本地仓库和远程仓库
超级pom:maven文件 lib/maven-model-builder-3.3.9.jar//org/apache/maven/model/pom.xml
https://repo.maven.apache.org/maven2 全球仓库的地址
镜像仓库
maven文件夹/conf/settings.xml
mirror标签
配置完后访问镜像仓库,原仓库不再访问
更改仓库位置
默认仓库下载地址: /home/juedaiyuer/.m2/repository
也可以设置仓库,放置在你的项目文件中,配置文件settings.xml
localRepository标签 修改仓库位置
坐标
<modelVersion> 指定了当前的pom的版本
//坐标三标签
<groupId> 反写的公司网址+项目名
<artifactId> 项目名+模块名
<version> 版本号 第一个数字:大版本号 第二个数字:分支版本号 第三个数字:小版本号
maven坐标格式:groupId:artifactId:packaging:version
包名应该与坐标相吻合
snapshot 快照
alpha 内部测试
beta 公测
Release 稳定
GA 正式发布
查看IDE是否安装maven
window-preferences中查看是否有maven选项,如果有不用安装;
安装maven到IDE
将maven插件复制到eclipse/dropins
配置
maven的一些核心插件需要JDK
eclipse运行在JRE上,需要添加JDK
修改eclipse.ini文件
-vm
jdk文件路径(yourjdk/bin)/javaw.exe
修改eclipse默认的JRE
配置JRE,与JDK同用;
add只需要选择JDK所在目录即可
maven配置修改为本机的maven
完整的项目构建过程
清理-编译-测试-打包-集成测试-验证-部署
maven生命周期
clean 清理项目
default 构建项目
site 生成项目站点
坐标信息
标签
name 项目描述名
url 项目的地址
description 项目的描述
developers 项目开发人员列表
licenses 许可证信息
organization 组织信息
dependencies 依赖列表
dependency 依赖项
groupId
artifactId
version
type
scope
optional 设置依赖是否可选
exclusions 排除依赖传递列表
exclusion
dependencyManagement 依赖的管理(不会引入实际的以来当中,一般定义在父模块中,供子模块继承)
build 构建行为提供支持
plugins 插件列表
plugin 插件
groupId
artifactId
version
parent
modules 聚合多个maven项目
module
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
scope标签
compile 默认的范围,编译测试运行都有效
provided 在编译和测试时有效
runtime 在测试和运行时有效
test 测试时有效
system 与本机系统相关联,可移植性差
import 导入的范围,它只使用在dependencyManagement中,表示从其它的pom中导入dependecy的配置
依赖的传递
依赖冲突
先声明先优先(如果路径长度相同)
A->B->C->X(jar)
A->D->X(jar)
优先解析路径短的
聚合和继承
new-maven-webapp
添加servlet依赖