今天是端午节哦,昨天大学同学举个了会。鱼头泡饼贼拉香,嗯哼,有点跑题了;之后去了同学家里坐了坐;发现同我有一样的书,即:《maven实战》;记得是从二手网店淘到的,已经买了有小半年,还只看了个目录; 打算用个端午的一天时间给它啃下来。。至此,立了一个小Flag...

目录

maven的规范:

默认情况下:

  1. 项目主代码位于 src/main/java 目录下,,编译后在target/classes下
  2. 项目测试代码位于 src/test/java ,编译后在target/test-class下。
  3. Maven构建的所有输入都在target/目录下。
  4. 自动访问Maven的中央仓库, http://repol.maven.org/maven2
  5. 默认打包类型jar, 主代码打包根据 artifact-version.jar规则命名打包输出到 target/目录下。
  6. 在项目根目录下放置pom.xml

注: 如pom.xml中的scope(依赖的范围),默认值是compile; 如果你看到指定为test,即:该依赖只对测试代码有效,若在主代码中使用,会造成编译错误。

mvn clean compile

背后的执行过程:

  • 先执行clean:clean任务,展出target/目录。
  • 再执行resources:resources任务,处理项目资源。
  • 最后执行compiler:compile任务,将项目主代码编译至target/classes目录。

    注:上文提及的如 clean:clean ...指的是Maven的插件和目标,eg: compiler:compile是compiler插件的complie目标。
mvn clean test

背后的执行过程:

注: 在执行test之前,Maven先自动执行项目主资源处理、主代码编译、测试资源处理、测试代码编译等工作,是就是Maven生命周期的特征。即,会先执行mvn clean compile背后的命令操作。

  • 先执行resources:testResources任务
  • 再执行compiler:testCompile任务
  • 最后执行surefire:test任务,执行测试并输出测试报告。

    注:上文提及的如 clean:clean ...指的是Maven的插件和目标,eg: compiler:compile是compiler插件的complie目标。
mvn clean package

背后的执行过程:

执行jar:jar任务,负责打jar包。

mvn clean install

作用:将项目输出的jar包安装到Maven本地仓库中,供其他Maven项目使用。

答疑解惑模块

1.为什么pom.xml都需要手动配置compiler插件呢?

例如:
<project>
...
<bulid>
<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>
...
</project>

解: 由于历史原因,Maven的核心插件之一compiler插件默认只支持Java 1.3,因此需要配置该插件使其支持当前的JDK版本。

2.如何生成可执行的jar文件?

注: 默认生成的jar包不能直接运行,因为没有将main方法的类信息添加到manifest中[在jar文件中META-INF/MANIFEST.MF文件中没有Main-Class的配置]。需要借助maven-shade-plugin插件。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<!-- 打成可执行的jar包 的主方法入口-->
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.golden.MainTest</mainClass>
</transformer>
</configuration>
</execution>
</executions>
</plugin>

使用Archetype生成项目骨架

mvn archetype:generate

背后的执行过程:

  • Maven2并不建议用改命令,这可能不是安全的,Maven2会自动下载最新版本Archetype插件,可能不稳定。而Maven3会自动下载最新最稳定的版本,所以可以放心使用。Maven2建议手动指定,命令格式为:mvn groupId:artifactId:version:goal[插件目标], eg:mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5:generate

(一)Maven之使用入门的更多相关文章

  1. 转载maven安装,配置,入门

    转载:http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html 本书代码下载 大家可以从我的网站下载本书的代码:http://ww ...

  2. maven学习记录一——maven介绍及入门

    1       Maven的简介 1.1     什么是maven 是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的 1.2     Maven好处 普通的传统项目 M ...

  3. Maven使用--基本入门

    maven学习(上)- 基本入门用法 转载自:https://www.cnblogs.com/yjmyzz/p/3495762.html 参考: http://www.cnblogs.com/dave ...

  4. appium + maven +jenkins 基本入门之二 新建maven 的java项目

    1: 下载maven : 1.0 :设置maven的环境变量: 1.1: 设置maven本地仓库: 在下载好的maven文件夹找到 apache-maven-3.3.9/conf 文件夹下的setti ...

  5. maven 教程一 入门

    摘要: (1)maven是项目管理工具,类似makefile.主要的生命阶段有 validate:验证工程是否正确,所有需要的资源是否可用.  compile:编译项目的源代码.    test:使用 ...

  6. Maven 结合 IDEA 入门实践

    一.Maven 基本安装 1. 下载 首先来到 http://maven.apache.org/download.cgi ,直接下载以 -bin.zip 结尾的文件,如图 2. 存储位置 将其解压后, ...

  7. IntelliJ IDEA下Maven SpringMVC+Mybatis入门搭建例子

    很久之前写了一篇SSH搭建例子,由于工作原因已经转到SpringMVC+Mybatis,就以之前SSH实现简单登陆的例子,总结看看SpringMVC+Mybatis怎么实现. Spring一开始是轻量 ...

  8. maven学习-基本入门用法

    一.下载及安装 1.1 下载maven 3.1.1 先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.1.1 ),下载完成后,解压到某个目录(本 ...

  9. Maven笔记 #01# 入门

    索引 Maven是干什么的? 用Maven的好处 Maven与命令行 Maven与IntelliJ IDEA 一.Maven是干什么的? 我相信只要你写过足够多的代码,就... 肯定有思考过写一个脚本 ...

  10. Maven+eclipse快速入门

    1.eclipse下载 在无外网情况下,无法通过eclipse自带的help-install new software输入url来获取maven插件,因此可以用集成了maven插件的免安装eclips ...

随机推荐

  1. 模板 - 无旋Treap

    一般而言作为一棵平衡树只需要插入,删除,值求排名,排名求值,前驱,后继,六个接口. #include<bits/stdc++.h> using namespace std; typedef ...

  2. linux:服务器代理squid安装配置

    国内上往外的网站太慢,配了个香港代理服务器.如下:当前环境: centos系统.香港服务器IP(假设:59.188.71.11)检查squid是否安装:[root@localhost ~]# rpm ...

  3. RabbitMQ几种队列模式

  4. C++ 中头文件<bits/stdc++.h>的优缺点

    在编程竞赛中,我们常见一个头文件: #include <bits/stdc++.h> 发现它是部分C++中支持的一个几乎万能的头文件,包含所有的可用到的C++库函数,如<istrea ...

  5. luogu P1397 [NOI2013]矩阵游戏

    传送门 题目中那两个递推式显然可以写成矩乘的形式,然后十进制快速幂即可.这里不再赘述 只有两个递推式,我们可以考虑一波推式子,首先第一行的元素应该分别是\(1,a+b,a^2+ab+b,a^3+a^2 ...

  6. 一般软件开发流程和BBS表设计

    项目开发流程 需求分析 架构师+产品经理+开发组组长 和客户公司谈需求之前 ,事先需要想一下这个项目要怎么做 里面的坑点提前想好比较简单的解决方案 在跟客户谈的时候有意识的引导客户朝你已经想好的方案上 ...

  7. 实现webpack的实时打包构建

    1. 由于每次重新修改代码之后,都需要手动运行webpack打包的命令,比较麻烦,所以使用`webpack-dev-server`来实现代码实时打包编译,当修改代码之后,会自动进行打包构建.2. 运行 ...

  8. 生成EXCEL文件是经常需要用到的功能,我们利用一些开源库可以很容易实现这个功能。

    方法一:利用excellibrary,http://code.google.com/p/excellibrary/ excellibrary是国人写的开源组件,很容易使用,可惜貌似还不支持.xlsx( ...

  9. Spring基础09——Bean的自动装配

    1.XML配置的Bean自动装配 SpringIOC容器可以自动装配Bean,需要做的仅仅是在<bean>的autowire属性里指定自动装配的模式,而不需要手工去指定要装配的Bean,a ...

  10. num1,随堂笔记(3月10日)

    1.计算机发展史(略) 2.我们所使用的计算机包括了计算机硬件.操作系统和应用程序与网络. 3.计算机硬件构成---CPU(运算器和控制器).内存.硬盘.输入设备和输出设备. ①CPU是计算机的主要计 ...