详解Maven打包和运行

将项目进行编译测试之后,接下来就是打包(package),我们的pom.xml中没有指定打包类型,那么使用默认打包类型jar,简单的执行命令 mvn clean package 进行打包

从输出内容可以看出,Maven在打包之前进行了编译、测试等操作。

jar任务负责打包,实际上就是jar插件的jar目标将项目主代码打包成一个名为hello-world-1.0-SNAPSHOT.jar的文件。该文件也位于target/输出目录

它是根据artifact-version.jar规则进行命名的。

至此,我们得到了项目的输出,如果有需要的话,就可以复制这个jar文件到其他项目的Classpath中,从而使用HelloWorld类。

但是,如何让其他的Maven项目直接饮用这个jar呢,还需要一个安装步骤:mvn clean install

在打包之后,又执行了install。从输出中可以看到该任务将项目输出的jar安装到了Maven本地仓库中,可以打开相应的文件夹看到HelloWorld项目的pom和jar。

现在我们已经介绍了Maven最主要的命令:mvn clean compile、mvn clean test、mvn clean package、mvn clean install。

执行test之前是会先执行compile的,执行package之前是会先执行test的,类似的install之前会先执行package,可以在任何一个Maven项目中执行这些命令。

默认打包生成的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>

这里配置了mainClass为com.juvenxu.mvnbook.helloworld.HelloWorld,项目打包时会将该信息放到MANIFEST中,再次执行mvn clean install,构建完之后打开target/目录,可以看到hello-world-0.0.1-SNAPSHOT.jar和original-hello-world-0.0.1-SNAPSHOT.jar,前者是带有Main-Class信息的可运行jar,后者是原始的jar

打开hello-world-0.0.1-SNAPSHOT.jar的META-INF/MANIFEST.MF,可以看到包含这样一样信息:

Main-Class: com.juvenxu.mvnbook.helloworld.HelloWorld

现在在项目根目录中执行该jar文件

# java -jar target/hello-world-0.0.1-SNAPSHOT.jar

控制台输出了Hello Maven

到此这篇关于Maven打包和运行的文章就介绍到这了,更多相关Maven打包和运行内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间:2020-07-17

浅谈maven 多环境打包发布的两种方式

集合工程中 maven 的多环境打包发布 在一个项目的开发过程中,我们经常要进行 开发环境 , 测试环境, 正式环境 打包部署,如果每次打包过程中我们都是人为的 根据 不同 环境 去修改一些 配置文件 ,这样不但工作量太庞大,而且还容易出错,而maven的插件正好解决了我们的困扰. 1. maven 聚合工程的创建 创建过程直接忽略,看最终的结果图 第一种方式 2. 不同环境打包的配置 因为要发布一个webapp的主要配置文件集中在 web工程中,故而,相关的配置文件都在 ecps-manage

使用maven profile指定配置文件打包适用多环境的方法

开发过程, 我们习惯把数据源配置, 项目常量, 日志配置等基础数据配置写到一个个单独的的文件中. 如jdbc.properties等各种.格式的文件. 如何不频繁修改配置文件, 随时打包不同基础数据配置信息的项目. 1.新建maven项目,   在pom.xml中添加 profile节点信息如下: <profiles> <profile> <!– 开发环境 –> <id>dev</id> <properties> <envi

Maven项目打包成war包部署到Tomcat的方法

有关于 Maven 项目的打包部署,我这里用的是 Eclipse 编辑器,以此来做个简单的记录. 实践环境 操作系统: Windows IDE: Eclipse 打包部署过程 1 项目打包 1.1 右键点击所需要打包的项目,点击如图所示 Maven clean,这里 Maven 会清楚掉之前对这个项目所有的打包信息. 1.2 进行完 Maven clean 操作后,在eclipse的控制台会出现以下的信息. 1.3 然后我们重新右键所需打包的项目,点击如图所示 Maven build 1.4 在

maven多模块工程打包部署的方法步骤

一般maven多模块工程结构如下图,图中分为dao数据层和上层web层(当然还可以有service层),在进行多模块划分的时候,一般将dao层采用jar进行打包,web层进行war打包.在进行war包部署时,发现dao是以jar包形式存在于lib包目录下,如果在部署服务器上需要进行相关配置修改会比较麻烦.因此研究了下用maven进行合并打包的方法: 1.确保dao pom.xml中有以下配置 <resources> <resource> <directory>${bas

maven打包web项目时同时打包为war和jar文件的方法

本文介绍了maven打包web项目时同时打包为war和jar文件的方法,分享给大家,具体如下: 首先在pom.xml文件中指定war的打包方式,war <artifactId>test</artifactId> <name>test</name> <packaging>war</packaging> 上述代码在eclipse中执行maven install时, 会默认打成war,并放入本地仓库. web项目时同时打包为war和jar文

SpringBoot+Maven 多模块项目的构建、运行、打包实战

本篇文章主要介绍了SpringBoot+Maven 多模块项目的构建.运行.打包,分享给大家,具体如下: 项目使用的工具: IntelliJ IDEA JDK 1.8 apache-maven-3.3.9 项目的目录: 主项目 springboot-multi 子模块 entity.dao.service.web 一.使用IDEA创建一个SpringBoot项目 : File -> new -> Project 项目名称为springboot-multi 二.删除项目中的src目录,把pom.

详解IDEA下Gradle多模块(项目)的构建

我们在新起一个项目的时候,一般都会建多个子项目(IDEA里面称之为Module模块).通过Gradle构建,多个Module之间需要将公用的配置抽取到全局,子项目中只写差异化的配置,以便于维护. 多模块项目的Gradle目录结构 示例:我的示例项目demo,我需要有一个common模块用于公用代码,一个rest模块用于提供rest接口,rest依赖common,如果用gradle构建,目录树会是这样: demo ├── build.gradle — 全局配置 ├── settings.grad

详解vue项目的构建,打包,发布全过程

详解Maven打包和运行

很多朋友对于VUE项目的一系列流程不熟悉,小编根据网友提出的问题,整理了关于vue项目的构建打包发布全过程,希望对你有用. 一.vue项目的创建 1.首先第一肯定是要有Node.js及npm这个不多说了 2.安装脚手架 此时可以直接浏览-但是现在肯定有很多小白想将他发布到gitHub上并可以浏览,使用vue全家桶制作自己的博客. 现在就有我来说说如何讲vue项目发布到github上 之前写过vue环境搭建 可以参考: vue环境搭建 二.vue项目的打包 1.大家都知道使用npm run bui

SpringBoot创建maven多模块项目实战代码

详解Maven打包和运行

工作中一直都是一个人奋战一人一个项目,使用maven管理,看这个也挺好,但是总感觉没有充分发挥maven的功能,于是研究了一下这个,网上关于这个的文章很多,虽然不是很好,但我从中收获了很多,在这集百家所长,写一份实战记录,大家跟着我一块做吧! 声明:构建多模块不是最难的,难点是如果把多模块打包成一个执行jar. SpringBoot官方推崇的是富jar,也就是jar文件启动项目,所以如果在这里打war包我不具体介绍,如果需要的朋友可以给我留言,我回复. 建议clone项目后,在看教程(有不足的地

IntelliJ IDEA创建maven多模块项目(图文教程)

详解Maven打包和运行

项目主要分成3个模块,wms-root为父模块,wms-core和wms-app(webapp类型的模块)为子模块. 一.Parent Project,创建wms-root父模块. 1.依次点击:File->New->Project 2.左侧面板选择maven(不要选择Create from archetype选项),如下图,点击Next即可. 3.依次补全如下信息,点击Next 4.输入项目名字.如ModuleProject,我们主要是在这个项目下创建我们的子模块. 5.这样我们就创建好了一

springboot+gradle 构建多模块项目的步骤

springboot用以进行web项目开发的便捷性,本文不再赘述,主要是想将工作中基于springboot与gradle的多模块项目的构建经验进行总结与归纳. 1.创建项目 首先安装java和gradle,本文选用的java版本为1.8.0_40,gradle版本为2.10,安装过程本文不再赘述. 其次创建项目,名称为 springboot-mm: mkdir springboot-mm cd springboot-mm gradle init 此时的项目结构如下: 接下来,创建多个模块,这里以

详解使用Maven构建多模块项目(图文)

详解Maven打包和运行

Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理.尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块. 项目结构如下: test-hd-parent (父级) —pom.xml —test-hd-api (第三方接口层) —-pom.xml —test-hd-foundation (基础工具层) —-pom.xml —test-hd-resource (资源层) —-pom.xml -

Maven多模块之父子关系的创建

Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理.尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块. Maven多模块(pom) 1.1 父模块创建 先创建个简单的空的Maven Project作为父项目 1.2 子模块创建 重新创建一个Maven Project作为子项目 1.3 父子模块(继承关系) 注意:此时父子模块为两个独立的项目. 步骤1:子项目中加入<parent>节点,传入父项目完整坐标. 步骤

详解Maven 搭建spring boot多模块项目(附源码

本文介绍了Maven 搭建spring boot多模块项目,分享给大家,具体如下: 备注:所有项目都在idea中创建 1.idea创建maven项目 1-1: 删除src,target目录,只保留pom.xml 1-2: 根目录pom.xml可被子模块继承,因此项目只是demo,未考虑太多性能问题,所以将诸多依赖.都写在根级`pom.xml`,子模块只需继承就可以使用. 1-3: 根级pom.xml文件在附录1 1-4: 依赖模块 mybatis spring-boot相关模块 2.创建子模块(

使用maven一步一步构建spring mvc项目(图文详解)

详解Maven打包和运行

1使用eclipse构建maven web项目 1.1新建Maven的web项目 打开菜单File –New-MavenProject. 点击Next 选择模板类型archtype–maven-archtype-webapp.然后点击Next. 输入Group Id和artifact Id.Group Id一般填入项目名称,Artifact Id一般填入子项目的名称. 生成的项目文件结构如下所示: 选择pom.xml文件,并打开,界面如下所示: 增加Properties:展开Propertie

原文 

https://www.zhangshengrong.com/p/boNwZY2naw/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 详解Maven打包和运行

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址