使用maven也有一年半了,总结一下maven的常见配置和命令
一、常用命令
` 注:插件2.2 之前 mvn archetype:create -DgroupId= -DartifactId=
插件2.3 mvn archetype:generate -DgroupId=com.unisoud -DartifactId=hello-lucene -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 创建mvn项目
mvn archetype:generate -DgroupId=com.unisoud -DartifactId=hello-lucene -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false创建web项目
-DinteractiveMode=false 以非交互模式创建项目
注:archetype:create在插件2.3以后就被废弃了
mvn package 生成target目录,编译、测试代码,生成测试报告,生成jar/war文件
mvn compile 编译
mvn test 编译并测试
mvn clean 清空生成的文件
mvn -Dwtpversion=1.0 eclipse:eclipse 生成Wtp插件的Web项目
mvn -Dwtpversion=1.0 eclipse:clean 清除Eclipse项目的配置信息(Web项目)
mvn eclipse:eclipse 将项目转化为Eclipse项目
mvn test 运行单元测试
mvn test -Dtest= 运行指定单元测试
mvn -e 显示详细错误 信息.
mvn deploy 发布项目到私服
———————-这些是很少用到的命令——————————–
mvn validate 验证工程是否正确,所有需要的资源是否可用。
mvn test-compile 编译项目测试代码。
mvn integration-test 在集成测试可以运行的环境中处理和发布包。
mvn verify 运行任何检查,验证包是否有效且达到质量标准。
mvn generate-sources 产生应用需要的任何额外的源代码,如xdoclet。
mvn site 生成项目相关信息的网站
mvn jetty:run 运行项目于jetty上
1、如何发布第三方jar包到私服?
mvn deploy:deploy-file -DgroupId=com -DartifactId=client -Dversion=0.1.0 -Dpackaging=jar -Dfile=d:\client-0.1.0.jar -DrepositoryId=maven-repository-inner -Durl=ftp://xxxxxxx/opt/maven/repository/
2、如何发布第三方jar包到本地仓库
mvn install:install-file -DgroupId=com -DartifactId=client -Dversion=0.1.0 -Dpackaging=jar -Dfile=d:\client-0.1.0.jar
3、我的程序有些单元测试有错误,如何忽略测试步骤?
给mvn增加命令行参数 -Dmaven.test.skip=true 或者 -DskipTests=true
4、如何在下载jar时同时下载源码和javadoc?
给mvn增加命令行参数: -DdownloadSources=true 下载源码 -DdownloadJavadocs=true 下载javadoc`
二、常用的pom文件插件配置
1、打包maven项目时同时打出依赖包
a.使用assembly自定义打包形式
<build>
<plugins>
<plugin>
<version>2.5.2</version>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptor>src/main/resources/assembly.xml</descriptor>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
assembly.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>jar-with-dependencies</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<unpack>false</unpack>
<scope>runtime</scope>
<useProjectArtifact>true</useProjectArtifact>
</dependencySet>
</dependencySets>
</assembly>
注意:unpack 默认为fasle,默认将所有依赖的第三方包打成一个大jar包,为true则意味着打包时依赖的第三方jar会打到一个文件夹下。
b.利用 maven-dependency-plugin 插件打包
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/${project.artifactId}-${project.version}-lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
如果只是配置插件,依赖的jar包可以被打出,但不会被添加到.classpath文件当中,要想添加到.classpath文件中还需要下面插件配置.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>${project.artifactId}-${project.version}-lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
2、生成可运行jar包
1 中的打包方式打出了依赖包,我们在他基础自上在.classpath文件中指定 mainClass 即可生成可运行jar包 。 在 1.b 的 maven-jar-plugin 的 manifest节点下添加配置
<mainClass>com.xxx.xxx.MainClassJavaFile</mainClass>
3、发布jar同时发布源码和javadoc
每当我们发布一个release版本到私服我需要同时发布源码和javadoc,此时需要如下配置
<plugins>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>deploy</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<phase>deploy</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<!-- explicitly define maven-deploy-plugin after other to force exec
order -->
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<executions>
<execution>
<id>deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
3、指定jdk的编译级别和编码格式以及编译内存、可fork模式
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<fork>true</fork>
<encoding>${project.build.sourceEncoding}</encoding>
<source>1.7</source>
<target>1.7</target>
<meminitial>512m</meminitial>
<maxmem>1024m</maxmem>
</configuration>
</plugin>
上面是一些基本常用的配置。