Maven常用命令:
mvn install 从maven仓库下载安装jar包,包括mvn clean和mvnpackage和mvn compile
mvn clean清除之前打包产生的项目
mvn package将项目重新打包
mvn deploy将项目中的jar包发布到私服包含 mvn install
mvn compile编译源代码
mvn eclipse:eclipse将项目转换成eclipse项目
mvn idea:idea将项目转换成idea项目
mvn clean install -u 强制更新打包
mvn install -Dmaven.test.skip=true 跳过所有单元测试进行打包
mvn install:install-file -DgroupId=com -DartifactId=client-Dversion=0.1.0 -Dpackaging=jar -Dfile=d:\client-0.1.0.jar发布第三方jar包到本地仓库
pom骨架:
maven中pom间接依赖:
如果发现某个jar包,自己的pom中并没有定义,想看一下是被哪个jar包间接引用的,两种方法
(1)用mvn dependency:tree>temp/tree.txt,直接输出到当前项目下,然后在idea中打开,搜索要找的jar包名字即可.
(2)mvn dependency:tree -Dincludes=jline 查找包含jline的包的依赖
<project>
<modelVersion>4.0.0</modelVersion>
<!--maven2.0必须是这样写,现在是maven2唯一支持的版本-->
<!-- 基础设置-->
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<packaging>...</packaging> <name>...</name>
<url>...</url>
<dependencies>...</dependencies>
<parent>...</parent>
<dependencyManagement>...</dependencyManagement>
<modules>...</modules>
<properties>...</properties>
<!--构建设置-->
<build>...</build>
<reporting>...</reporting>
<!-- 更多项目信息-->
<name>...</name>
<description>...</description>
<url>...</url>
<inceptionYear>...</inceptionYear>
<licenses>...</licenses>
<organization>...</organization>
<developers>...</developers>
<contributors>...</contributors>
<!-- 环境设置-->
<issueManagement>...</issueManagement>
<ciManagement>...</ciManagement>
<mailingLists>...</mailingLists>
<scm>...</scm>
<prerequisites>...</prerequisites>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<distributionManagement>...</distributionManagement>
<profiles>...</profiles>
</project>
groupId:项目或者组织唯一标识符
artifactId项目的通用名称,包名
version 项目的版本号
packaging:打包机制,如pom,jar,maven-plugin,ejb,war,ear,rar,par
name:用户描述项目的名称,无关紧要的东西,可选
url:应该是只是写明开发团队的网站,无关紧要,可选
其中groupId,artifactId,version,packaging这四项组成了项目的唯一坐标。一般情况下,前面三项就可以组成项目的唯一坐标了。
exclusions:如果X需要A,A包含B依赖,那么X可以声明不要B依赖,只要在exclusions中声明exclusion.
exclusion:是将B从依赖树中删除
如果一个工程是parent的那么packaging必须写成pom
properties:是为pom定义一些常量,在pom中的其它地方可以直接引用。
定义方式如下:
<properties>
<file.encoding>UTF-8</file_encoding>
<java.source.version>1.5</java_source_version>
<java.target.version>1.5</java_target_version>
</properties>
使用方式 如下 :
${file.encoding}
build设置:
defaultGoal:默认的目标,必须跟命令行上的参数相同,如:jar:jar,或者与时期parse相同,例如install
directory:指定buildtarget目标的目录,默认为$(basedir}/target,即项目根目录下的target
finalName:指定去掉后缀的工程名字,例如:默认为${artifactId}-${version}
filters:用于定义指定filter属性的位置,例如filter元素赋值filters/filter1.properties,那么这个文件里面就可以定义name=value对,这个name=value对的值就可以在工程pom中通过${name}引用,默认的filter目录是${basedir}/src/main/fiters/
resources:描述工程中资源的位置
<resource>
<targetPath>META-INF/plexus</targetPath>
<filtering>false</filtering>
<directory>${basedir}/src/main/plexus</directory>
<includes>
<include>configuration.xml</include>
</includes>
<excludes>
<exclude>**/*.properties</exclude>
</excludes>
</resource>
targetPath:指定build资源到哪个目录,默认是basedirectory
filtering:指定是否将filter文件(即上面说的filters里定义的*.property文件)的变量值在这个resource文件有效,例如上面就指定那些变量值在configuration文件无效。
directory:指定属性文件的目录,build的过程需要找到它,并且将其放到targetPath下,默认的directory是${basedir}/src/main/resources
includes:指定包含文件的patterns,符合样式并且在directory目录下的文件将会包含进project的资源文件。
excludes:指定不包含在内的patterns,如果inclues与excludes有冲突,那么excludes胜利,那些符合冲突的样式的文件是不会包含进来的。
testResources:这个模块包含测试资源元素,其内容定义与resources类似,不同的一点是默认的测试资源路径是${basedir}/src/test/resources,测试资源是不部署的。
Maven 私服:
使用nexus搭建,下载nexu,进入nexus官网进行下载然后解压压缩包,选择电脑对应的版本进行下载双击install-nexus.bat 把nexus安装成一个服务,这时候在浏览器输入http://localhost:8081/nexus 将看到如下页面,说明安装成功,登陆之后可以管理仓库。
在maven中使用nexus ,找到maven的配置在conf文件夹下修改setting.xml在mirrors节点加入私服的配置信息例如用户名密码私服地址等。
私服中jar包的管理,可以单独建一个项目(里面只有pom和其他一些配置文件)设置packing为pom,然后写上所有需要管理的版本号以及依赖包,版本号方便整个项目使用统一的版本避免包版本冲突,其他人使用时只需要在依赖中输入groupId和artifactId不需要输入版本号,会自动按照私服中的版本号进行安装。使用mvn deploy提交至maven私服
用Maven的assembly插件实现自定义打包
1. 首先我们需要在pom.xml中配置maven的assembly插件
2. 接着我们在src/main/assembly文件中配置assembly.xml文件
Maven 将本地jar包添加到本地仓库
1.安装maven, 设置maven系统环境变量,一般下载后解压即可以使用, 默认的setting配置本地仓库路径为用户下的.m目录下,可以修改为指定目录:
2. 准备好本地jar包,我以zookeeper-3.4.10.jar为例,本地路径为E:\softwares\zookeeper-3.4.10\zookeeper-3.4.10.jar
3. 指定jar包在maven仓库的groupId,artifactId,version等信息,此处保留zookeeper-3.4.10.jar的原本信息
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.10</version>
</dependency>
执行maven命令:
mvn install:install-file -Dfile=E:\softwares\zookeeper-3.4.10\zookeeper-3.4.10.jar -DgroupId=org.apache.zookeeper -DartifactId=zookeeper -Dversion=3.4.10 -Dpackaging=jar