zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Maven实战. 3.3编写测试代码

Maven 实战 编写 3.3 测试代码
2023-09-11 14:16:02 时间

3.4打包和运行

将项目进行编译、测试之后,下一个重要步骤就是打包(package)。Hello World的POM中没有指定打包类型,使用默认打包类型jar。简单地执行命令 mvn clean package 进行打包,可以看到如下输出:…

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

 

[INFO] [jar:jar {execution: defaultjar}]

[INFO] Building jar: D:\code\helloworld\target\helloworld1.0SNAPSHOT.jar

[INFO]

------------------------------------------------------------------------

[INFO] BUILD SUCCESSFUL

…类似地,Maven会在打包之前执行编译、测试等操作。这里看到jar:jar任务负责打包,实际上就是jar插件的jar目标将项目主代码打包成一个名为helloworld1.0SNAPSHOT.jar的文件。该文件也位于target/输出目录中,它是根据artifactversion.jar规则进行命名的,如有需要,还可以使用finalName来自定义该文件的名称,这里暂且不展开,后面会详细解释。

至此,我们得到了项目的输出,如果有需要的话,就可以复制这个jar文件到其他项目的Classpath中从而使用HelloWorld类。但是,如何才能让其他的Maven项目直接引用这个jar呢?还需要一个安装的步骤,执行 mvn clean install:…

[INFO] [jar:jar {execution: defaultjar}]

[INFO] Building jar: D: \code\helloworld\target\helloworld1.0SNAPSHOT.jar

[INFO] [install:install {execution: defaultinstall}]

[INFO] Installing D:\code\helloworld\target\helloworld1.0SNAPSHOT.jar to C:\Users\juven\.m2\repository\com\juvenxu\mvnbook\helloworld\1.0SNAPSHOT\helloworld1.0SNAPSHOT.jar

[INFO]

------------------------------------------------------------------------

[INFO] BUILD SUCCESSFUL

…在打包之后,又执行了安装任务install:install。从输出可以看到该任务将项目输出的jar安装到了Maven本地仓库中,可以打开相应的文件夹看到Hello World项目的pom和jar。之前讲述JUnit的POM及jar的下载的时候,我们说只有构件被下载到本地仓库后,才能由所有Maven项目使用,这里是同样的道理,只有将Hello World的构件安装到本地仓库之后,其他Maven项目才能使用它。

我们已经体验了Maven最主要的命令:mvn clean compile、mvn clean test、mvn clean package、mvn clean install。执行test之前是会先执行compile的,执行package之前是会先执行test的,而类似地,install之前会执行package。可以在任何一个Maven项目中执行这些命令,而且我们已经清楚它们是用来做什么的。

到目前为止,还没有运行Hello World项目,不要忘了HelloWorld类可是有一个main方法的。默认打包生成的jar是不能够直接运行的,因为带有main方法的类信息不会添加到manifest中(打开jar文件中的METAINF/MANIFEST.MF文件,将无法看到MainClass一行)。为了生成可执行的jar文件,需要借助mavenshadeplugin,配置该插件如下: 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 com.juvenxu.mvnbook.helloworld.HelloWorld /mainClass

/transformer

/transformers

/configuration

/execution

/executions

/plugin plugin元素在POM中的相对位置应该在 project build plugins 下面。我们配置了mainClass为com.juvenxu.mvnbook.helloworld.HelloWorld,项目在打包时会将该信息放到MANIFEST中。现在执行 mvn clean install,待构建完成之后打开target/目录,可以看到helloworld1.0SNAPSHOT.jar和originalhelloworld1.0SNAPSHOT.jar,前者是带有MainClass信息的可运行jar,后者是原始的jar,打开helloworld1.0SNAPSHOT.jar的METAINF/MANIFEST.MF,可以看到它包含这样一行信息:MainClass: com.juvenxu.mvnbook.helloworld.HelloWorld现在,在项目根目录中执行该jar文件:D: \code\helloworld javajar target\helloworld1.0SNAPSHOT.jar

Hello Maven控制台输出为Hello Maven,这正是我们所期望的。

本小节介绍了Hello World项目,侧重点是Maven而非Java代码本身,介绍了POM、Maven项目结构以及如何编译、测试、打包等。


Maven实战从入门到精通(全) 目录前言1. 安装及配置2. 核心概念 了解Maven的具体概念、功能、具体执行步骤以及如何搭建等 Maven 具体功能: maven 是自动化构建工具,可以部署项目;管理jar文件,自动下载jar、文档和源代码;管理jar直接的依赖以及版本;编译程序,把java编译为class;测试代码是否正确;打包文件,形成jar文件或者war文件 具体构建步骤: 构建是面向过程,主要步骤是 清理:把之前项目编译的东西删除掉,为新的编译代码做准备。 编译: 把程序源代码编译为执行代码, 把java编译成clas
Maven实战 Maven是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM):POM(Project Object Model):项目对象模型!
jenkins持续集成从0入门到实战【三】集成Git和Maven Maven是目前主流的自动化构建工具,而Git也是目前主流的分布式版本控制系统。要做Java项目的持续集成必须会集成这2个工具。