maven是一个项目自动化管理与构建工具,简单地来说,我拿它干两件事:
做本地的jar包管理
用来打包
至于打成jar包还是zip包,可以在pom.xml文件中指定。
pom文件
在eclipse中安装maven插件后,新建maven工程,可以发现在根目录下有一个pom.xml。pom文件是整个项目的核心,可以添加远程仓库地址:
<repositories>
<repository>
<id>maven repo</id>
<url>http://mvnrepository.com/artifact/</url>
</repository>
</repositories>
我一般是用mvnrepository作为中央repository。
也可以指定项目build时encoding方式为UTF-8,在本地下载jar包时同时下载source、javaDoc的jar包:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</properties>
可以添加jar包依赖:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
可以指定项目build方式:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
上面的build方式为在项目打包时,同时也会打sourcejar包。我平时常用build方式都会采用assembly,会打一个纯项目包与with-dependencies的包(即加上了所有的包依赖))。
maven命令
maven提供了丰富的插件,可以用如下的命令执行:
mvn <plugin-name>:<goal-name>
比如mvn eclipse:eclipse
,表示使用maven-eclipse-plugin的eclipse-goal生成eclipse项目。
下载source与javadoc
下载依赖包的source与javadoc,有两种方法:
方法一
可输入下面两条命令,参看这里
mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc
方法二
在pom中添加
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
</plugins>
</build>
然后输入mvn eclipse:eclipse
,即可。
setting文件
除了在pom.xml可以指定中央repository的URL地址,其次也可以在settting.xml指定中央repo的镜像地址,比如这样:
<mirrors>
<mirror>
<id>internal-repository</id>
<name>Maven Repository Manager</name>
<url>http://repo.mycompany.com/proxy</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
注意
:setting.xml要放在~/.m2/
目录下。
oschina提供maven镜像,再也不用担心下载慢的问题了。
<mirror>
<id>nexus-osc</id>
<mirrorOf>*</mirrorOf>
<name>Nexus osc</name>
<url>http://maven.oschina.net/content/groups/public/</url>
</mirror>
<mirror>
<id>nexus-osc</id>
<mirrorOf>central</mirrorOf>
<name>Nexus osc</name>
<url>http://maven.oschina.net/content/groups/public/</url>
</mirror>
<mirror>
<id>nexus-osc-thirdparty</id>
<mirrorOf>thirdparty</mirrorOf>
<name>Nexus osc thirdparty</name>
<url>http://maven.oschina.net/content/repositories/thirdparty/</url>
</mirror>
<profile>
<id>jdk-1.4</id>
<activation>
<jdk>1.4</jdk>
</activation>
<repositories>
<repository>
<id>nexus</id>
<name>local private nexus</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>local private nexus</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>