java maven教程_Maven入门教程

Maven简介

Maven是Java项目构建工具,可以用于管理Java依赖,还可以用于编译、打包以及发布Java项目,类似于JavaScript生态系统中的NPM。

Maven的命令行工具为mvn,其常用命令如下表所示:

命令

说明

mvn compile

编译Java源代码

mvn package

打包Java项目

mvn deploy

将Java项目发布到Maven仓库

mvn clean

删除构建目录

Maven的配置文件为pom.xml,这个文件有个很吓人的学术名字Project Object Model,但是怎么看它都只是个普通的配置文件,与NPM中的package.json没啥本质区别。

安装Maven

在MacBook上使用brew安装很方便

brew install maven

我安装的是maven版本3.5.4

mvn -version

Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)

Maven home: /usr/local/Cellar/maven/3.5.4/libexec

Java version: 1.8.0_192, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/jre

Default locale: zh_CN, platform encoding: UTF-8

OS name: "mac os x", version: "10.14.2", arch: "x86_64", family: "mac"

示例代码

使用tree命令可以查看项目的目录结构:

tree -v

.

├── pom.xml

└── src

└── main

└── java

└── com

└── fundebug

└── Hello.java

pom.xml为Maven配置文件,位于项目的根目录。

Hello.java为Java源代码,位于src/main/java/com/fundebug目录中。根据Maven对目录结构的要求,Java源代码必须位于src/main/java目录。

Hello.java

package com.fundebug;

import org.json.JSONObject;

public class Hello {

public static void main(String[] args) {

JSONObject tomJsonObj = new JSONObject();

tomJsonObj.put("name", "Fundebug");

tomJsonObj.put("url", "https://www.fundebug.com");

System.out.println(tomJsonObj.toString(4));

}

}

Hello.java非常简单,定义了一个JSON对象,然后把它打印出来了。

package定义的包名为com.fundebug,需要与所在的目录结构相吻合,因此Hello.java位于src/main/java/com/fundebug目录中,而不是src/main/java/目录中。

代码依赖于第三方模块json,因此需要在pom.xml配置dependency:

org.json

json

20180813

pom.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

4.0.0

com.fundebug

hello

1.0

org.json

json

20180813

pom.xml中,为最外层的标签;4.0.0定义了所使用的POM版本。这2个标签基本上是不变的。

groupId、artifactId与version一起则定义了模块的坐标(Coordinates),每个公共模块的坐标应该是唯一的:

groupId:组织名称,通常是把域名反过来,例如com.fundebug

artifactId:模块名称,例如fundebug-java

version:模块版本,例如0.2.0

定义了当前项目所依赖的模块:

org.json

json

20180813

Maven可以根据中定义的坐标,自动下载所依赖的模块。在MacBook上,Maven将下载的模块缓存在$HOME/.m2/目录。

使用mvn打包

执行mvn package命令,即可将源码打包为.jar文件:

mvn package

[INFO] Scanning for projects...

[INFO]

[INFO] -------------------------< com.fundebug:hello >-------------------------

[INFO] Building hello 1.0

[INFO] --------------------------------[ jar ]---------------------------------

[INFO]

[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ hello ---

[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory /Users/fundebug/Desktop/maven-tutorial/src/main/resources

[INFO]

[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ hello ---

[INFO] Changes detected - recompiling the module!

[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!

[INFO] Compiling 1 source file to /Users/fundebug/Desktop/maven-tutorial/target/classes

[INFO]

[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ hello ---

[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory /Users/fundebug/Desktop/maven-tutorial/src/test/resources

[INFO]

[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ hello ---

[INFO] No sources to compile

[INFO]

[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ hello ---

[INFO] No tests to run.

[INFO]

[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ hello ---

[INFO] Building jar: /Users/fundebug/Desktop/maven-tutorial/target/hello-1.0.jar

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 2.789 s

[INFO] Finished at: 2019-01-05T15:23:02+08:00

[INFO] ------------------------------------------------------------------------

mvn package执行之后,项目中会新增一个tartget目录,编译的字节码文件位于target/classes目录,而jar包位于target/hello-1.0.jar:

tree -v

.

├── pom.xml

├── src

│   └── main

│   └── java

│   └── com

│   └── fundebug

│   └── Hello.java

└── target

├── classes

│   └── com

│   └── fundebug

│   └── Hello.class

├── hello-1.0.jar

使用mvn运行

打包好的jar包,可以直接使用java命令运行时,注意需要指定所依赖的jar包。对于所依赖的jar包,Maven则会自动下载依赖,放在本地仓库中。在MacBook上,Maven本地仓库位于$HOME/.m2/目录。

java -cp target/hello-1.0.jar:$HOME/.m2/repository/org/json/json/20180813/json-20180813.jar com.fundebug.Hello

{

"name": "Fundebug",

"url": "https://www.fundebug.com"

}

也可以使用mvn exec:java命令执行,不需要指定依赖的jar包,更加方便:

mvn exec:java -Dexec.mainClass="com.fundebug.Hello"

[INFO] Scanning for projects...

[INFO]

[INFO] -------------------------< com.fundebug:hello >-------------------------

[INFO] Building hello 1.0

[INFO] --------------------------------[ jar ]---------------------------------

[INFO]

[INFO] --- exec-maven-plugin:1.6.0:java (default-cli) @ hello ---

{

"name": "Fundebug",

"url": "https://www.fundebug.com"

}

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 0.837 s

[INFO] Finished at: 2019-01-05T15:33:57+08:00

[INFO] ------------------------------------------------------------------------

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值