使用maven构建java项目

本文翻译自http://spring.io/guides/gs/maven/#scratch
http://blog.csdn.net/u010902721/article/details/51203170
这篇文章将会引导你使用maven构建一个简单的java项目。

下面你将构建什么项目?

下面你将会创建一个关于系统时间的项目,然后通过maven构建它。

你需要的东西

  • 大约15分钟的时间;
  • 一个你喜欢的文本编辑器或者IDE;
  • JDK6以上。

建立工程

首先你需要创建一个JAVA工程,然后使用maven构建它。为了把注意力放到maven上,现在让你的JAVA工程尽可能简单。

创建目录结构

在你选择的项目目录下,创建如下所示的子目录结构。例如,可以在类unix系统上使用命令mkdir -p src/main/java/hello创建目录。

└── src
    └── main
        └── java
            └── hello

在目录src/main/java/hello下,你可以创建任何java类。我们先创建两个类HelloWorld.javaGreeter.java

//文件src/main/java/hello/HelloWorld.java
package hello;

public class HelloWorld {
    public static void main(String[] args) {
        Greeter greeter = new Greeter();
        System.out.println(greeter.sayHello());
    }
}

//文件src/main/java/hello/Greeter.java
package hello;

public class Greeter {
    public String sayHello() {
        return "Hello world!";
    }
}

现在我们有了一个可以用maven构建的项目了,下一步就是安装maven。可以从 http://maven.apache.org/download.cgi下载maven的压缩包。我们只需要二进制包,所以在下载页面找apache-maven-{version}-bin.zip或者apache-maven-{version}-bin.tar.gz。
下载压缩包并解压到你想放置的目录后,把里面的bin目录放到你的系统变量里。例如我的电脑里是把D:\Program Files (x86)\Apache Software Foundation\apache-maven-3.3.9\bin放到了系统变量里。
在命令行使用mvn -v命令检查maven是否被成功安装。如果一切顺利,你将看到maven的安装信息如下。

Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 07:51:28-0600)
Maven home: /usr/share/maven
Java version: 1.7.0_09, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.3", arch: "x86_64", family: "mac"

祝贺你,现在你已经成功安装了maven。

使用maven构建简单的项目

现在maven已经安装好了,你可以创建一个maven项目。maven项目是由一个pom.xml文件定义的。这个文件中注明了java项目的名称、版本号和依赖的外部库等。
在之前创建的项目根目录中新建文件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>org.springframework</groupId>
    <artifactId>gs-maven</artifactId>
    <packaging>jar</packaging>
    <version>0.1.0</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>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>hello.HelloWorld</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

除了可选的< packaging>元素之外,这是构建java项目所必须的最简单的pom.xml文件。它包含了项目配置的如下细节。
- < modelVersion>. POM 的版本号 (总是 4.0.0).
- < groupId>. 这个java项目所属的公司或者组织.
- < artifactId>. 工程名字。(例如, 使用构建出来的JAR或者WAR文件的名字).
- < version>. 本工程的版本号.
- < packaging> - 打包方式. 默认是”jar”.也可以使用”war” 打包成war包.
至此,你创建了一个最简单的maven项目。

编译java代码

现在可以使用maven构建你的项目了。可以使用maven编译项目代码、打包(jar包或者war包)或者将包安装到本地的maven依赖仓库。
使用如下的命令编译项目代码:

mvn compile

编译完成之后,将会在target或者classes目录下看到编译好的.class文件。
由于你不太可能直接发布.class文件,使用mvn package命令会编译你的java代码、执行你的测试向量,最后将你的代码打包成jar或者war包,并发布到项目的target目录下。jar包的名字将会根据pom.xml文件中配置的<artifactId><version>命名。例如,根据之前pom.xml文件构建的jar包的名字将是gs-maven-0.1.0.jar。
maven会在你的机器上维护一个本地依赖库(通常在安装根目录下.m2/repository) 来快速获取项目的依赖包。如果你想把你发布的jar包安装到maven的本地依赖库,执行mvn install。这条命令将会编译、测试、打包你的项目代码,并拷贝到maven的本地依赖库,使得其他项目可以依赖你的这个包。
说到依赖,现在讲讲在pom.xml中声明依赖。

在pom.xml中声明依赖(dependencies)

之前的helloworld例子完全没有依赖任何的外部包,大多数的项目将会依赖外部包完成公共的或者复杂的功能。
例如,在刚才的项目中你想加入日期和时间的功能,尽管你可以使用java的原生库完成,你也可以使用Joda时间库使事情更有趣。
把HelloWorld.java的代码更改成如下形式:

//文件src/main/java/hello/HelloWorld.java

package hello;

import org.joda.time.LocalTime;

public class HelloWorld {
    public static void main(String[] args) {
        LocalTime currentTime = new LocalTime();
        System.out.println("The current local time is: " + currentTime);
        Greeter greeter = new Greeter();
        System.out.println(greeter.sayHello());
    }
}

这里HelloWorld类使用Joda时间库中LocalTime类来获得和打印当前时间。如果你现在使用mvn compile命令编译项目,你将会失败,因为你还没有在pom.xml文件中声明Joda时间库作为项目依赖。你可以在pom.xml的<project>元素下添加如下内容来解决依赖错误。

<properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.2</version>
        </dependency>
    </dependencies>

这段xml代码声明了项目所需要的所有的依赖库。这里只声明了一个joda-time。在<dependency>元素中,使用三个子元素定位一个外部依赖库。
- groupId 这个库所属的组织或者公司。
- artifactId 依赖的库的名字。
- version 依赖的库版本号。
默认所有的依赖都是在编译期的依赖,也就是说在编译期能够获取那些依赖包。另外,也可以使用<scope>元素指定为以下scope:
1. <provided>这些依赖将会将会在编译器被使用,另外执行期也要使用。例如Java Servlet API。
2. <test>这些依赖被用在编译期和执行测试用例的时候,在build和执行期不会被使用。
现在如果你执行mvn compile命令或者mvn package命令,maven应该能够在maven的中心仓库中找到Joda time依赖,这两条命令将会执行成功。
完整的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>org.springframework</groupId>
    <artifactId>gs-maven</artifactId>
    <packaging>jar</packaging>
    <version>0.1.0</version>

    <!-- tag::joda[] -->
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.2</version>
        </dependency>
    </dependencies>
    <!-- end::joda[] -->

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>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>hello.HelloWorld</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

总结

祝贺你,您已经创建了一个简单但有效的Maven项目。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值