Maven实战. 3.3编写测试代码
3.4打包和运行
将项目进行编译、测试之后,下一个重要步骤就是打包(package)。Hello World的POM中没有指定打包类型,使用默认打包类型jar。简单地执行命令 mvn clean package 进行打包,可以看到如下输出:…
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] [jar:jar {execution: defaultjar}]
[INFO] Building jar: D:\code\helloworld\target\helloworld1.0SNAPSHOT.jar
[INFO]
------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
…类似地,Maven会在打包之前执行编译、测试等操作。这里看到jar:jar任务负责打包,实际上就是jar插件的jar目标将项目主代码打包成一个名为helloworld1.0SNAPSHOT.jar的文件。该文件也位于target/输出目录中,它是根据artifactversion.jar规则进行命名的,如有需要,还可以使用finalName来自定义该文件的名称,这里暂且不展开,后面会详细解释。
至此,我们得到了项目的输出,如果有需要的话,就可以复制这个jar文件到其他项目的Classpath中从而使用HelloWorld类。但是,如何才能让其他的Maven项目直接引用这个jar呢?还需要一个安装的步骤,执行 mvn clean install:…
[INFO] [jar:jar {execution: defaultjar}]
[INFO] Building jar: D: \code\helloworld\target\helloworld1.0SNAPSHOT.jar
[INFO] [install:install {execution: defaultinstall}]
[INFO] Installing D:\code\helloworld\target\helloworld1.0SNAPSHOT.jar to C:\Users\juven\.m2\repository\com\juvenxu\mvnbook\helloworld\1.0SNAPSHOT\helloworld1.0SNAPSHOT.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文件中的METAINF/MANIFEST.MF文件,将无法看到MainClass一行)。为了生成可执行的jar文件,需要借助mavenshadeplugin,配置该插件如下: plugin
groupId org.apache.maven.plugins /groupId
artifactId mavenshadeplugin /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/目录,可以看到helloworld1.0SNAPSHOT.jar和originalhelloworld1.0SNAPSHOT.jar,前者是带有MainClass信息的可运行jar,后者是原始的jar,打开helloworld1.0SNAPSHOT.jar的METAINF/MANIFEST.MF,可以看到它包含这样一行信息:MainClass: com.juvenxu.mvnbook.helloworld.HelloWorld现在,在项目根目录中执行该jar文件:D: \code\helloworld javajar target\helloworld1.0SNAPSHOT.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个工具。
相关文章
- Maven简介
- Maven实战
- Maven实战1.1何为Maven
- Maven实战. 2.8小结
- Maven实战. 3.5使用Archetype生成项目骨架
- Maven实战. 3.6m2eclipse简单使用
- Maven实战. 3.7NetBeans Maven插件简单使用
- Maven实战. 导读
- Maven学习笔记-父pom和子pom
- idea简单实现mybatis(详解),使用maven项目
- 【IDEA】Maven 配置阿里云仓库
- 【IDEA】+把自己做的小工具jar包上传到官方Maven仓库
- Spring Data Jpa Maven 创建
- maven-war-plugin 插件 web.xml 缺失时忽略
- Maven实战系列文章
- maven手动下载依赖
- 使用IntelliJ IDEA和Maven构建Java web项目并打包部署
- Maven入门介绍
- Maven常用命令汇总
- Linux安装Maven
- Maven学习---使用maven进行项目构建
- 深入理解maven及应用--转