Building Java Projects with Maven

1.目标

建立一个应用提供一天中的时间查询,使用Maven构建该项目。

2.代码

package hello;

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

public class HelloWorld {
    public static void main(String[] args) {
        Greeter greeter = new Greeter();
        System.out.println(greeter.sayHello());
    }
}
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework</groupId>
    <artifactId>gs-maven</artifactId>
    <packaging>jar</packaging>
    <version>0.1.0</version>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</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>

<modelVersion> ,POM版本(固定4.0.0)

<groupId>,项目的归属者,群或者是组织,通常写成反过来的域名。com.baidu

<artifactId>,项目作为库时候的名称,通常是JAR或WAR的名称。

<version>,要建立的项目版本。

<packaging>,使用jar打包成JAR文件,使用war打包成WAR文件。

mvn compile

告诉Maven执行compile,你会找到编译后的.class文件,在target/classes文件夹内。

mvn package

告诉Maven编译java代码,将所有代码放到一个JAR文件内。JAR文件的名字就是和的组合。

mvn install

Maven在本地机器上维护一个依赖库,目的是可以快速访问项目依赖,可以使用上面命令将JAR安装到本地库。

3.修改代码

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());
  }
}

需要增加依赖,添加到pom中,更新maven。

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

<groupId>,该依赖属于群或组织。

<artifactId>,库名称是必填的。

<version>,指定的版本是必填的。

默认情况下,所有的依赖的scope都是compile。也就是说他们在编译时可用。

scope的值provided,依赖在编译项目时是必须的

scope的值test,依赖可以用于编译和运行,但不是必须的。

4.写一个测试

package hello;

import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.*;

import org.junit.Test;

public class GreeterTest {

    private Greeter greeter = new Greeter();

    @Test
    public void greeterSaysHello() {
        assertThat(greeter.sayHello(), containsString("Hello"));
    }

}

添加依赖

        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
            <version>1.3</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>compile</scope>
        </dependency>

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐