一、maven入门

maven的世界里,一切都从pom文件开始......

TIM图片20170723214603.gif

下面是一个入门级helloworld项目的 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.zheng.mvnstudy</groupId>
  <artifactId>hello-world</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name> Maven Hello World Project </name>
</project>

pom文件中的groupIdartifactIdversion三个元素定义了项目的基本坐标,在maven中,任何jar,pom,war都是以这些基本坐标元素来区分的。

无规矩不成方圆,在pom文件中定义的元素都有各自的规范。

groupId定义了项目所属组,通常与公司或组织有关,格式形如公司或组织网址反序.项目名(假设域名为www.zheng.com建立的一个myapp项目,最后命名为com.zheng.myapp)

artifactId项目模块名,在所属组中唯一,用于区分不同的模块,比如上面的hello-world,格式形如项目名-模块名

version定义了当前项目的版本,在maven中定义了几个版本符号SNAPSHOT(开发版),alpha,(内部测试版),beta(外部测试),release(发布版),根据项目不同情况填写不同的版本标识

name为当前项目模块声明了一个友好的名称,虽然不是必须的,但是建议为每一个项目模块都定义一个友好的名称,方便信息交流

maven与java代码之间是相互解耦互相不影响的

maven项目结构

project-name
    src
        main
            java
            resources
        test
            java
            resources

其中src/main/里面的代码被称之为主代码,在打包时会打包到最终的构建中,src/test下面的代码为测试代码,打包时将被忽略

代码包名定义规范
groupId/artifactId相吻合,项目中java类包都应该基于项目的groupIdartifactId,比如上面的hello-world模块主代码包为:src/main/java/com/zheng/mvnstudy/helloworld

maven的功能非常强大,它还可以配置各种插件以满足项目需要,下面的插件将项目编译环境设置成了jdk1.8

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
  </build>

maven开始构建项目时,它会自动完成对项目主资源处理、主代码编译、测试资源处理、测试代码编译等工作

maven生成可运行的jar

java编译环境可以直接对包含main方法的类打包成jar包并运行,在maven中也可以做到这一点,但要实现这个功能,需要借助额外的插件maven-shade-plugin

提示:maven常规打包生成的jar包是无法直接运行的,因为带有main方法的类信息不会直接添加到MANIFEST文件中(打开jar文件中的META-INF/MANIFEST.MF将无法看到Main-Class一项参数)

<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.zheng.helloworld.HelloWorld</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

使用archetype生成项目骨架

maven3提供了一个archetype工具用于帮助用户自动生成maven项目结构,通过CMD进入到项目目录中直接运行mvn archetype:generate
下面是运行命令之后的结果
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 984: Choose org.apache.maven.archetypes:maven-archetype-quickstart version: 1: 1.0-alpha-1 2: 1.0-alpha-2 3: 1.0-alpha-3 4: 1.0-alpha-4 5: 1.0 6: 1.1 Choose a number: 5: Define value for property 'groupId': : com.zheng.helloworld Define value for property 'artifactId': : hello-world-archetype Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': com.zheng.helloworld: : Confirm properties configuration: groupId: com.zheng.helloworld artifactId: hello-world-archetype version: 1.0-SNAPSHOT package: com.zheng.helloworld Y: : Y [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: basedir, Value: D:\workspace\maven-study [INFO] Parameter: package, Value: com.zheng.helloworld [INFO] Parameter: groupId, Value: com.zheng.helloworld [INFO] Parameter: artifactId, Value: hello-world-archetype [INFO] Parameter: packageName, Value: com.zheng.helloworld [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] project created from Old (1.x) Archetype in dir: D:\workspace\maven-study\hello-world-archetype [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 03:10 min [INFO] Finished at: 2017-06-17T23:07:00+08:00 [INFO] Final Memory: 15M/178M [INFO] ------------------------------------------------------------------------
最后会在项目目录下生成项目的基本结构

TIM截图20170721003653.png

以上是我学习《maven实战》一书前三章所做的笔记要点,写在简书上主要是方便自己查阅,当然如果我的笔记能帮到大家那我也是非常开心的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容

  • Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。...
    cqzhangjian阅读 1,600评论 0 51
  • 24.maven自动化部署 (待测试)# 在项目开发中,通常是部署过程包含以下步骤 检入代码在建项目全部进入SVN...
    明_27bf阅读 560评论 0 0
  • 1. 什么是archeType 我们在创建maven项目的时候,你会发现有这么多的apache提供的模板。 或者使...
    诸葛垣缨阅读 762评论 0 0
  • Maven - 自定义archetype 前言 核心内容 单Module 多Module 前言 要自定义arche...
    齐晋阅读 5,423评论 1 5
  • 原文链接:http://www.dropwizard.io/1.2.0/docs/getting-started....
    Lance_Xu阅读 902评论 0 0