maven deploy plugin_Maven快速上手

6782eea2a1131c228a4b81b1ad8cc029.png

作者:u_7deeb657158f

出自:ITPUB博客

原文:blog.itpub.net/69956102/viewspace-2726121/


创建项目

首先需要创建一个用于存储项目的文件夹,在控制台中输入以下命令:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

如果你刚刚安装Maven,则这个命令会需要消耗一些时间,因为Maven需要下载一些插件或者文件至你本地的资源库中。你可能需要运行这个命令几次才会成功,因为一些远程服务器会连接超时(这个问题有办法解决)。

命令执行成功后会创建一个与artifactId同名的目录,该目录结构为标准的Maven项目结构

命令执行成功后会创建一个与artifactId同名的目录,该目录结构为标准的Maven项目结构
my-app
│  pom.xml
│  tree.txt
│  
└─src├─main│  └─java│      └─cn│          └─daiwuliang│                  App.java│                  └─test└─java└─cn└─daiwuliangAppTest.java

src/main/java 包含了项目源代码
src/test/java 包含了测试源代码
pom.xml 是项目对象模型

POM(Project Object Model)

pom.xml是Maven项目配置的核心,它包含了构建项目所需的主要信息,POM很复杂,但是开发人员需要深入了解它。

<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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.mycompany.app</groupId><artifactId>my-app</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies>
</project>

构建命令解析

上面执行的构建命令,含义是执行了Maven目标(goal) archetype:generate,之后的参数为传入目标的参数,前缀archetype是提供目标(goal)的插件,如果你熟悉Ant,你可以将目标理解为Ant的task, archetype:generate 目标(goal)在 maven-archetype-quickstart原型基础上的简单项目。总结来说,插件(plugin)就是一系列目的相近的目标(goal)的集合,例如jboss-maven-plugin,它的目标是多种jboss项目

构建工程

mvn package

控制台中最终会输出:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.241 s
[INFO] Finished at: 2020-10-10T17:25:02+08:00
[INFO] ------------------------------------------------------------------------

这个命令与上一个(archetype:generate)有着明显的不同,这个命令不是运行目标(goal)而是阶段(phase),阶段(phase)是构建生命周期(build lifecycle)的一个步骤,阶段(phase)在生命周期中是有顺序的,当一个阶段(phase)被执行时,在它前面的所有阶段(phase)都会被执行,例如,如果我们执行compile阶段,实际执行的阶段(phase)有:

  1. validate
  2. generate-sources
  3. process-sources
  4. generate-resources
  5. process-resources
  6. compile

可以通过以下命令验证编译结果:

java -cp target/my-app-1.0-SNAPSHOT.jar cn.daiwuliang.App

会输出:

Hello World!

对Java 9+的支持

Maven默认使用旧版本编译插件 maven-compiler-plugin,该版本插件不兼容Java9或者更新的版本,如果项目使用使用Java9+,则应该使用3.6.0+的maven-compiler-plugin,并且设置 属性 maven.compiler.release 为目标Java版本

以下为配置的一个例子:

<properties><maven.compiler.release>11</maven.compiler.release></properties><build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version></plugin></plugins></pluginManagement></build>

运行Maven

Maven阶段(phase)
以下为通常的默认生命周期阶段:

  • validate: 校验工程是否包含了所有必要的信息
  • compile: 编译工程的源代码
  • test: 使用合适的单元测试框架测试编译后的源代码,这些测试不应该依赖打包或者发布的代码
  • package: 将编译后代码打包为发布格式,例如JAR
  • integration-test: 运行集成测试
  • verify: 运行检查项,以验证打包文件符合质量标准
  • install: 安装打包文件到本地资源库,可供本地其他项目依赖
  • deploy: 会在集成环境或者正式环境执行,将最终的打包文件发布至远程仓库,以供其他卡发着或者工程使用

在默认的阶段之外还有两个阶段:

  • clean: 清空之前构建内容
  • site: 生成工程的文档信息
    阶段(Phase)实际上是一些底层的目标(goal),阶段(phase)和目标(goal)可以按照书写顺序执行:
mvn clean dependency:copy-dependencies package

这个命令会清空工程,复制依赖,打包工程

生成站点

mvn site

这个站点的生成依赖于pom配置,生成后的文件位于target/site

896822c042ee99a172d03bf6672154b8.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机应用基础形考作业3Excel部分,计算机应用基础形考3,Excel部分

“计算机应用基础”形考作业 3(Excel部分)可根据所学知识模块&#xff0c;在下列Excel、PowerPoint或Access中选做一个&#xff0c;我选了Excel (本次作业覆盖“模块 3 Excel 2010 电子表格系统”的内容&#xff0c;请在学完模块3后完成本次作业&#xff0c;要求第17周内完成。…

.net string format

转自&#xff1a;http://www.cnblogs.com/jobs2/p/3948049.html 转自&#xff1a;http://jingyan.baidu.com/article/48206aeaf8c52f216ad6b300.html 1、格式化货币&#xff08;跟系统的环境有关&#xff0c;中文系统默认格式化人民币&#xff0c;英文系统格式化美元&#xff0…

Scala 入门2(数组、List、Set、Map、元组、Option、Iterator)

文章目录1. 数组2. List3. Set4. Map5. 元组6. Option7. 迭代器学自 https://www.runoob.com/scala/scala-tutorial.html 1. 数组 使用 () 来取索引处的元素 // 数组var z1 : Array[String] new Array[String](3)var z2 new Array[String](3) // 两种方式定义z1(0) "…

python实现非对称加密算法_Python3非对称加密算法RSA实例详解

本文实例讲述了Python3非对称加密算法RSA。分享给大家供大家参考&#xff0c;具体如下&#xff1a;python3 可以使用 Crypto.PublicKey.RSA 和 rsa 生成公钥、私钥。其中 python3.6 Crypto 库的安装方式请参考前面一篇《Python3对称加密算法AES、DES3》rsa 加解密的库使用 pip3…

python画饼图_百度飞桨PaddlePaddle之[Python小白逆袭大神]7天训练营

第三次参加百度的7天训练营了这次参加的主题是【Python小白逆袭大神】&#xff0c;不过你别看是小白逆势。。。除非你一开始参加就逆袭完&#xff0c;不然你真的是python小白&#xff0c;这个课程还是有难难度的。说一下个训练营的特点版。这个营从python一些基础练习-->数据…

潍坊学院的计算机类怎么样,潍坊学院教育技术学专业怎么样?有知道的麻烦说下,谢谢!...

潍坊学院教育技术学专业怎么样&#xff1f;有知道的麻烦说下&#xff0c;谢谢&#xff01;以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;潍坊学院教育技术学专业怎么样&#xff1f;有知道的…

elasticsearch配置文件详解

elasticsearch的config文件夹里面有两个配置文件&#xff1a;elasticsearch.yml和logging.yml&#xff0c;第一个是es的基本配置文件&#xff0c;第二个是日志配置文件&#xff0c;es也是使用log4j来记录日志的&#xff0c;所以logging.yml里的设置按普通log4j配置文件来设置就…

Scala 入门3(类、Trait、模式匹配、正则、异常、提取器、IO)

文章目录1. 类和对象2. Trait3. 模式匹配4. 正则5. 异常处理6. 提取器7. 文件 IO学自 https://www.runoob.com/scala/scala-tutorial.html 1. 类和对象 object myClass {import java.io._class Point(xc : Int, yc : Int){var x : Int xcvar y : Int ycdef move(dx:Int, dy…

The Power of Android Action Bars(转载)

转自&#xff1a;http://www.informit.com/articles/article.aspx?p1743642转载于:https://www.cnblogs.com/lance-ehf/p/4285239.html

计算机网络校园网简单设计与实现,简单校园网的设计与实现.docx

本科课程考查(论文)专用封面作业(论文)题目&#xff1a;所修课程名称&#xff1a;简单校园网的设计与实现 《计算机网络实践》修课程时间&#xff1a; 2012年 9月至 2012年 12月完成作业(论文)日期&#xff1a;2012年12月评阅成绩&#xff1a;评阅意见&#xff1a;评阅教师签名…

python面向对象继承

如果一个A类继承自另一个B类&#xff0c;就把这个A类称为B的子类&#xff0c;把B称为A的父类或者超类。继承可以使子类具有父类的各种属性和方法&#xff0c;而不再需要写相同的代码。在令子类继承父类的同时&#xff0c;可以重新定义某些属性和方法&#xff0c;使其获得与父类…

c++ class struct同名_C/C++面向对象编程之封装

点击“蓝字”关注我们吧前言&#xff1a;何为面向过程&#xff1a;面向过程&#xff0c;本质是“顺序&#xff0c;循环&#xff0c;分支” 面向过程开发&#xff0c;就像是总有人问你要后续的计划一样&#xff0c;下一步做什么&#xff0c;再下一步做什么&#xff0c;意外、事物…

LeetCode 1718. 构建字典序最大的可行序列(贪心+回溯)

文章目录1. 题目2. 解题1. 题目 给你一个整数 n &#xff0c;请你找到满足下面条件的一个序列&#xff1a; 整数 1 在序列中只出现一次。2 到 n 之间每个整数都恰好出现两次。对于每个 2 到 n 之间的整数 i &#xff0c;两个 i 之间出现的距离恰好为 i 。 序列里面两个数 a[…

collections求和方法_java集合求和最大值最小值示例分享

package com.happyelements.athene.game.util;import static com.google.common.base.Preconditions.checkNotNull;import java.util.Collection;import com.google.common.collect.Lists;/*** Math工具类** version 1.0* since 1.0*/public class MathUtil {/*** see MathUtil…

为什么要给计算机配置IP地址,更改ip地址 为何要重启电脑

在系统中&#xff0c;如果想修改计算机的IP地址&#xff0c;系统会提示重新启动计算机&#xff0c;有没有什么办法不重启机器又照样改IP呢&#xff1f; 首先按自己的需要改动IP地址&#xff0c;点击[确定] 按钮后&#xff0c;系统会出现重新启动计算机的提示。此时点击[否]&…

static函数

// 以下摘自网络 静态函数在函数的返回类型前加上关键字static&#xff0c;函数就被定义成为静态函数。函数的定义和声明默认情况下是extern的&#xff0c;但静态函数只是在声明他的文件当中可见&#xff0c;不能被其他文件所用。定义静态函数的好处&#xff1a;<1> 其他…

python中数据类型转换原理_python的可变与不可变数据类型的原理是什么呢?

Python中变量的进阶知识&#xff1a; 涉及到Python的对象知识。 即&#xff1a;可变对象和不可变对象。题目中的可变和不可变数据类型&#xff0c;表述不准确。 Python中&#xff0c;一切皆对象。 对象是一种抽象。抽象是什么&#xff1f;抽象就是一种概念上的简化。 《learnin…

python股票历史最低点_Python统计某一只股票每天的开盘,收盘,最高,最低价格!...

模块&#xff1a;Numpy码字不易&#xff0c;转载请注明出处&#xff01;十分感谢&#xff01;准备工作&#xff1a;抓取某一只股票的信息&#xff0c;每30min为一组数据&#xff0c;可以参考上一篇&#xff1a;Note: 只为演示如何统计&#xff0c;更精准的可以抓取每5min为一组…

操作系统是计算机的什么管理者,操作系统是计算机资源的管理者

由计算机提供的、因应用程序的存在和运行所消耗或占用的物质条件&#xff0c;叫做计算机的资 源&#xff0c;例如处理器的时间、内存空间、外部设各等。为了有效地利用计算机的各种资源&#xff0c;操作系统 必须为用户承担起对计算机资源的管理任务。例如&#xff0c;为了使应…

python文件流读取二进制_Python使用web.py从POST请求中提取二进制文件

I am developing an API that allows outside clients to send a binary file which will be processed. my web.data() is a string and the function I am calling requires a binary. How do I get it into the correct format? Maybe I have the incorrect Headers? how …