构建一个简单的基于maven的java项目

本文详细介绍了如何构建一个简单的基于Maven的Java项目,包括理解Maven项目结构、使用Maven命令行工具进行构建以及添加单元测试。通过示例展示了pom.xml配置,包括依赖管理、scope的使用,并提供了HelloWorld和测试类的代码。通过执行`mvn install`命令,可以生成可执行jar包。最后,解释了Maven的不同生命周期阶段及其功能。
摘要由CSDN通过智能技术生成

附源码:构建一个简单的基于maven的java项目

概括:

本案例在于构建一个简单的基于maven的java项目

  • 熟悉maven项目结构
  • 使用maven各个声明周期mvn命令构建项目
  • 添加单元测试到maven项目中

1. 准备java项目

目录结构
  • 一个完整的基于mavan的java项目目录结构至少拥有以下目录结构
    在这里插入图片描述
pom.xml依赖
  • <dependency>的<scope>元素:
  • scope默认为compile,也就是说所有依赖项作用域都是compile依赖,他们应该在编译时是可用的,如构建一个war文件,那么编译时就应该被添加到war文件的/WEB-INF/libs目录中;
  • scope除compile外,其他枚举有:
    • provided:编译项目代码需要的依赖项,他们会在运行时由运行代码的容器(如tomcat)提供,如Java Servlet API;
    • test:编译和运行测试时的依赖项,但是构建和运行项目代码时是不必要的
<?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">
	<!-- pom model的版本 -->
	<modelVersion>4.0.0</modelVersion>
	<!-- 项目所属的组组名,通常是域名反写 -->
	<groupId>com.example</groupId>
	<!-- 为项目类库artifact命名,如jar包或war包的名称 -->
	<artifactId>demo_java</artifactId>
	<!-- 项目应该打包成什么类型,jar包是jar,war包则是war -->
	<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>
	
	<dependencies>
		<dependency>
			<groupId>joda-time</groupId>
			<artifactId>joda-time</artifactId>
			<version>2.9.2</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
	
	<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>
Java源代码:

HelloWorld.java

  • 应用main方法入口
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());
	}
}

Greeter.java

  • 测试相关类
package hello;

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

GreeterTest.java

  • 添加junit单元测试
  • maven使用surefire进行单元测试
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 greeterSayHello(){
		assertThat(greeter.sayHello(), containsString("Hello"));
	}
}

2. 源代码构建

按照上述目录架构和文件创建完整项目;
然后命令行切换到项目根目录使用maven相关命令构建项目的可执行jar文件;

这里执行以下命令构建可执行jar包:

mvn install
注:mvn各个lifecycle命令执行内容
  • mvn clean:
    • maven-clean-plugin
  • mvn compile:
    • maven-resources-plugin::resources
    • maven-compiler-plugin::compile
  • mvn test:
    • maven-resources-plugin::resources
    • maven-compiler-plugin::compile
    • maven-resources-plugin::testResources
    • maven-compiler-plugin::testCompile
    • maven-surefire-plugin::test
  • mvn package:
    • maven-resources-plugin::resources
    • maven-compiler-plugin::compile
    • maven-resources-plugin::testResources
    • maven-compiler-plugin::testCompile
    • maven-surefire-plugin::test
    • maven-jar-plugin::jar
  • mvn install:
    • maven-resources-plugin::resources
    • maven-compiler-plugin::compile
    • maven-resources-plugin::testResources
    • maven-compiler-plugin::testCompile
    • maven-surefire-plugin::test
    • maven-jar-plugin::jar
    • maven-shade-plugin::shade
    • maven-install-plugin::install

3. 结果

日志中打印"BUILD SUCCESS"表示成功;

打开本地maven资源库,查看jar包是否已经上传到对应位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值