Maven构建Java项目与项目测试

  |  

摘要: 本文介绍了 Maven 中构建 Java 项目以及项目测试的要点。包括从零构建 Java 项目,添加其它 Java 文件,引入外部依赖。

【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】
我的网站:潮汐朝夕的生活实验室
我的公众号:算法题刷刷
我的知乎:潮汐朝夕
我的github:FennelDumplings
我的leetcode:FennelDumplings


构建 Java 项目

Maven 使用原型 archetype 插件创建项目。要创建一个简单的 Java 应用,我们将使用 maven-archetype-quickstart 插件。

在下面的例子中,我们将在 MVN 文件夹下创建一个基于 maven 的 java 应用项目。

命令如下:

1
2
3
4
mvn archetype:generate "-DgroupId=com.companyname.bank" \
"-DartifactId=consumerBanking" \
"-DarchetypeArtifactId=maven-archetype-quickstart" \
"-DinteractiveMode=false"

参数说明:

  • -DgroupId: 组织名,公司网址的反写 + 项目名称
  • -DartifactId: 项目名-模块名
  • -DarchetypeArtifactId: 指定 ArchetypeId,maven-archetype-quickstart,创建一个简单的 Java 应用
  • -DinteractiveMode: 是否使用交互模式

生成的目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
▾ consumerBanking/
pom.xml
▾ src/
▾ main/
▾ java/
▾ com/
▾ companyname/
▾ bank/
App.java
▾ test/
▾ java/
▾ com/
▾ companyname/
▾ bank/
AppTest.java

各个文件夹说明如下:

文件夹结构 描述
consumerBanking 包含 src 文件夹和 pom.xml
src/main/java contains java 代码文件在包结构下(com/companyName/bank)。
src/test/java contains 测试代码文件在包结构下(com/companyName/bank)。
src/main/resources 包含了 图片 / 属性 文件(在上面的例子中,我们需要手动创建这个结构)。

在 MVN/consumerBanking/src/main/java/com/companyname/bank 文件夹中,可以看到一个 App.java,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.companyname.bank;

/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}

在 MVN/consumerBanking/src/test/java/com/companyname/bank 文件夹,可以看到 Java 测试文件 AppTest.java。代码如下:

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
package com.companyname.bank;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**
* Unit test for simple App.
*/
public class AppTest extends TestCase
{
/**
* Create the test case
*
* @param testName name of the test case
*/
public AppTest( String testName )
{
super( testName );
}

/**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
}

/**
* Rigourous Test :-)
*/
public void testApp()
{
assertTrue( true );
}
}

在项目根目录下,有 pom.xml,代码如下:

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
<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>com.companyname.bank</groupId>
<artifactId>consumerBanking</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>consumerBanking</name>
<url>http://maven.apache.org</url>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>10</source>
<target>10</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

其中 中的内容是手动加的,主要解决本地 jdk 版本比 pom 默认版本高的问题,然后执行以下命令构建项目:

1
mvn clean package

执行完后,我们已经构建了自己的项目并创建了最终的 jar 文件,下面是一些关键概念:

  • 我们给了 maven 两个目标,首先清理目标目录(clean),然后打包项目构建的输出为 jar(package)文件。
  • 打包好的 jar 文件可以在 consumerBanking/target 中获得,名称为 consumerBanking-1.0-SNAPSHOT.jar。
  • 测试报告存放在 consumerBanking/target/surefire-reports 文件夹中。
  • Maven 编译源码文件,以及测试源码文件。
  • 接着 Maven 运行测试用例。
  • 最后 Maven 创建项目包。

进入 target/classes 目录,执行 java com.companyname.bank.App,即可看到结果:

1
Hello World!

添加其它 Java 文件到项目中

在 consumerBanking/src/main/java/com/companyname/bank 文件夹中,创建 Util 类 Util.java。

代码如下:

1
2
3
4
5
6
7
8
package com.companyname.bank;

public class Util
{
public static void printMessage(String message){
System.out.println(message);
}
}

更新 App 类来使用 Util 类:

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.companyname.bank;

/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
Util.printMessage("Hello World!");
}
}

然后执行 mvn clean compile,成功之后进入 target/classes,执行 java -cp . com.companyname.bank.App

在项目中引入外部依赖

如果我们需要引入第三方库文件到项目,该怎么操作。

pom.xml 的 dependencies 列表列出了我们的项目需要构建的所有外部依赖项。

要添加依赖项,我们一般是先在 src 文件夹下添加 lib 文件夹,然后将你工程需要的 jar 文件复制到 lib 文件夹下。

例如如果我们要使用 ldapjdk.jar,它是为 LDAP 操作的一个帮助库,那么目录结构如下:

1
2
3
4
5
6
7
▾ consumerBanking/
pom.xml
▾ src/
▾ lib/
ldapjdk.jar
▾ main/
▾ test/

添加以下依赖到 pom.xml 中:

1
2
3
4
5
6
7
8
9
10
<dependencies>
<!-- 在这里添加你的依赖 -->
<dependency>
<groupId>ldapjdk</groupId> <!-- 库名称,也可以自定义 -->
<artifactId>ldapjdk</artifactId> <!-- 库名称,也可以自定义 -->
<version>1.0</version> <!--版本号-->
<scope>system</scope> <!--作用域-->
<systemPath>${basedir}/src/lib/ldapjdk.jar</systemPath> <!-- 项目根目录下的 lib 文件夹下 -->
</dependency>
</dependencies>

Share