Maven安装和使用(3.3.9) 2016-03-27 09:01

安装

  • 安装Maven软件包(解压即可)
  • 配置环境变量
M2_HOME=f:\apache-maven-3.0.5
M2=%M2_HOME%\bin
PATH=.;%M2_HOME%\bin
  • 配置本地仓库和国内镜像环境

配置文件路径:apache-maven-x.x.x\conf\settings.xml

配置本地仓库路径:

从远端仓库中下载下来的jar包将保存到此处。

1
<localRepository>F:\apache-maven-3.0.5\localRepository\</localRepository>

配置Maven服务器镜像:

1
2
3
4
5
6
7
8
<mirrors>
  <mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>        
  </mirror>
</mirrors>

也可以在具体项目中配置仓库镜像:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<project>
    <repositories>
        <repository>
            <id>jboss-maven2-release-repository</id>
            <name>Jboss Maven2 Repository</name>
            <url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>
        </repository>
        <repository>
            <id>central</id>
            <name>Maven Central</name>
            <url>http://repo1.maven.org/maven2/</url>
        </repository>
        <repository>
            <id>clojars</id>
            <name>Clojars</name>
            <url>https://clojars.org/repo/</url>
        </repository>
        <repository>
            <id>scala-tools</id>
            <name>Scala-tools Maven2 Repository</name>
            <url>http://scala-tools.org/repo-releases</url>
        </repository>
        <repository>
            <id>conjars</id>
            <name>Conjars</name>
            <url>http://conjars.org/repo/</url>
        </repository>
        <repository>
            <id>maven-hadoop</id>
            <name>Hadoop Releases</name>
            <url>https://repository.cloudera.com/content/repositories/releases/</url>
        </repository>
        <repository>
            <id>cloudera-repos</id>
            <name>Cloudera Repos</name>
            <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
        </repository>
    </repositories>
</project>

使用

Maven将项目结构模板称为"archetype"。创建Maven项目时,要指定archetype。

Maven常用的几个概念:

  1. groupId :项目所属的组织,比如"net.cheyo.storm"
  2. artifactId :项目ID,比如"helloworld"
  3. package :Java的包名,比如"net.cheyo.storm"
  4. version :软件的版本号,编译后的目标文件中会包含此版本号。比如"1.0-SNAPSHOP"

创建项目

  • 以交互式方式创建项目:
mvn archetype:generate -DgroupId=net.cheyo.storm -DartifactId=helloworld -Dpackage=net.cheyo.storm -Dversion=1.0-SNAPSHOT

执行以上命令,然后根据提示,选择maven-archetype-quickstart(758),1.1版本,来创建项目。

maven创建的文件,包含一个pom.xml,一个src/main/java代码目录和一个src/test/java测试目录。

  • 以非交互式(批模式)创建项目(常用):

-B参数表示批模式。通过增加archetypeGroupId和archetypeArtifactId以及archetypeVersion来指定要创建的模板。

mvn archetype:generate -B -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.1 -DgroupId=net.cheyo.storm -DartifactId=helloworld -Dpackage=net.cheyo.storm -Dversion=1.0-SNAPSHOT

使用Maven构建项目

常用操作:

mvn clean #清理target目录下的内容
mvn compile #编译
mvn package #打包。 package之前会自动mvn test进行测试。
mvn package -Dmaven.test.skip=true #打包,但跳过测试。
mvn test #测试。 Test之前会自动mvn compile进行编译。

构建可运行的jar包

默认Maven构建出来的jar包是不带manifest的。即默认的jar包无法使用java -jar命令运行。

如果要让Maven构建出来的jar包可直接运行,可以通过maven-shade-plugin插件。

在pom.xml中增加如下配置,其中要注意jar入口函数的类名。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>1.2.1</version>
      <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>
                      net.cheyo.storm.App
                  </mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
      </executions>
    </plugin>
  </plugins>
</build>

运行新生成的jar包:

java -jar ./target/helloworld-1.0-SNAPSHOT.jar

常见问题

  1. java版本问题
[ERROR] /opt/src/storm/StormTest/src/main/java/net/cheyo/storm/MyTestTopo6.java:[95,52] diamond operator is not supported in -source 1.5
  (use -source 7 or higher to enable diamond operator)

原因分析:java的模板语法需要1.7版本才劫持。而新版本maven默认使用1.5 java进行编译。

解决方法:通过在pom.xml中增加如下配置指定采用java 1.7版本进行编译。

1
2
3
4
<properties>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
</properties>
Tags: #Maven    Post on Programming