maven学习一(HelloWorld工程)
maven是一个出色的java工程依赖管理的工具,刚刚开始学习用maven建立一个HelloWorld工程。
maven安装
$ wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
$ tar -zxvf apache-maven-3.3.9-bin.tar.gz
$ sudo mv apache-maven-3.3.9 /usr/local/maven
$ export PATH=$PATH:/usr/local/maven/bin
$ mvn -version
配置maven源
maven和Linux下的yum是很像的,在解析依赖的时候会去配置的源里搜索包,然后下载下来保存到本地仓库,下次其它工程解析到同一个包依赖时就会从本地仓库里取。maven的配置文件默认是在
$INSTALL_DIR/conf/settings.xml
conf/settings.xml是maven的全局配置,每个用户还可以配置自定义的settings.xml,路径是
~/.m2/settings.xml
settings.xml具体每项配置的含义可以查看:maven配置文件settings.xml。其中有一项配置是
localRepository就是本地仓库路径,jar包都会下载到这个目录下
<localRepository>${user.home}/.m2/repository</localRepository>
另外,国内使用maven可以用oschina的源:http://maven.oschina.net/static/xml/settings.xml
新建HelloWorld工程
maven有几个概念
groupId: 项目的组织机构,也是java包的目录结构,一般都是域名的倒序,比如 com.firefoxbug.www
artifactId: 项目实际的名字,比如log4j
packaging: 包的类型,比如jar
version: 项目版本号,比如1.0-SNAPSHOT
再引入maven坐标的概念
${groupId}:${artifactId}:${packaging}:${version}
通过maven坐标可以唯一确定一个项目,比如 com.firefoxbug.www:HelloWorld:jar:1.0-SNAPSHOT。
下面开始建立一个HelloWorld的maven工程
$ groupId=com.firefoxbug.www
$ artifactId=HelloWorld
$ version=1.0-SNAPSHOT
$ mvn archetype:generate -DgroupId=${groupId} -DartifactId=${artifactId} -Dpackage=${groupId} -Dversion=${version}
maven会自动建立一些列的目录,结构如下
HelloWorld/
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── firefoxbug
│ └── www
│ └── App.java
└── test
└── java
└── com
└── firefoxbug
└── www
└── AppTest.java
pom.xml
每个工程都会有pom.xml用来描述这个工程所需要的外部依赖,包括具体版本的jar包,maven自动会去解析pom.xml文件然后下载包到本地仓库,被依赖的包自身也有pom.xml描述文件,maven就会递归解析。pom.xml大概格式如下,后面我们再慢慢分析。
$ cd helloworld && vim pom.xml
<project >
<groupId>com.firefoxbug.helloworld</groupId>
<artifactId>helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>helloworld</name>
<dependencies>
<dependency>
</dependency>
</dependencies>
</project>
编译、运行HelloWorld
maven工具可以支持以下功能
1. mvn compile 编译源代码
2. mvn test-compile 编译测试代码
3. mvn test 运行测试
5. mvn package 打包,根据pom.xml打成war或jar
如果pom.xml中设置 war,则此命令相当于mvn war:war
如果pom.xml中设置 jar,则此命令相当于mvn jar:jar
6. mvn -Dtest package
打包但不编译test例子:mvn package -Dmaven.test.skip=true
打包、编译但是不运行test例子: mvn package -DskipTests
7. mvn install 在本地Repository中安装jar
8. mvn clean 清除产生的项目
9. mvn eclipse:eclipse 生成eclipse项目
10.mvn idea:idea 生成idea项目
11.mvn eclipse:clean 清除eclipse的一些系统设置
package会进行打包,包括编译、测试
$ mvn package
如果编译没有错误,就会在根目录下产生一个target目录,并且生成相应的jar包,解压出来后就是工程目录
$ cd target
$ jar -xvf HelloWorld-1.0-SNAPSHOT.jar
created: META-INF/
inflated: META-INF/MANIFEST.MF
created: com/
created: com/firefoxbug/
created: com/firefoxbug/www/
inflated: com/firefoxbug/www/App.class
...
运行HellWorld
$ java -cp HelloWorld-1.0-SNAPSHOT.jar com.firefoxbug.www.App
Hello World!
from: http://www.firefoxbug.com/index.php/archives/2815/
maven学习一(HelloWorld工程)的更多相关文章
- iOS学习之HelloWorld工程
本文应读者要求,主要简介使用Xcode创建一个“HelloWorld”工程. 1.打开Xcode,点击新建工程 选择工程类型 2.填写工程信息 3.代码简介 // // main.m // hello ...
- maven学习二(dependencies)
在前面一篇文章maven学习一(HelloWorld工程)已经对maven有了基本介绍,本文开始介绍maven依赖,通过如何如何增加log4j来学习maven的dependencies no-depe ...
- [maven学习笔记]第一节,认识maven,搭建maven开发环境,写第一个HelloWorld
本文地址:http://blog.csdn.net/sushengmiyan/article/details/40142771 maven官网:http://maven.apache.org/ 学习视 ...
- android的helloworld工程目录学习
android的helloworld工程目录学习 Android工程的主要目录有src.gen.Android X.X.bin.res等文件夹. 1. Src文件夹 Src文件夹包含java源 ...
- Maven学习第4期---Maven简单使用
一.Maven常用命令 在学习使用Maven构建项目之前,先来了解一下Maven一些实用的命令.mvn的命令有很多,在项目开发中,理解了下面的几个常用命令后,运用maven就基本没有问题了.Maven ...
- maven学习(1)下载和安装和初步使用(手动构建项目和自动构建项目)
1:背景 关于项目的搭建,有些人使用开发工具搭建项目,然后将项目所依赖第三方jar 复制到类路径下面,上述搭建方式没有第三方类库的依赖关系,在导入一个jar包的时候,这个jar包还可能依赖其他jar包 ...
- Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试
现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...
- 基于eclipse创建android的helloworld工程
基于eclipse创建android的helloworld工程 之前用过Android studio感觉很慢,决定采用eclipse来学习Android开发.下面来看是怎么创建的. 选择File--- ...
- eclipse 创建maven 项目 动态web工程完整示例
需求表均同springmvc案例 此处只是使用maven 注意,以下所有需要建立在你的eclipse等已经集成配置好了maven了,说白了就是新建项目的时候已经可以找到maven了 没有的话需要安装m ...
随机推荐
- 解决Linux安装 VMware tools 工具的方法
一:启动linux服务器,并用远程登录工具访问linux服务器 1:启动系统 2:用服务器控制台 :查看点ip地址 3:用客户端 连接服务器 二:挂起 vm虚拟机的 tools 安装光盘 三:开始 ...
- 淘淘商城 本地仓库配置和仓库jar包下载
SVN服务器的搭建请查看该文:<Win7 x64 svn 服务器搭建> 1:仓库包存放位置: 2:setting.xml 文件配置信息 <?xml version="1.0 ...
- C++11 AUTO 类型实践
auto在C++11中引入,为大家带来方便. 具体使用及注意事项参考: https://blog.csdn.net/xiaoquantouer/article/details/51647865 htt ...
- vue-router之路由钩子(组件内路由钩子必须在路由组件调用,子组件没用)
模式 vue-router中的模式选项主要在router实例化的时候进行定义的,如下 const router = new VueRouter({ mode: 'history', // 两种类型hi ...
- wpf 用户自定义事件传参2
public delegate void MenuButtonClickEventHandler(object sender, EventArgs e); public event MenuButto ...
- 【python】中文提取,判断,分词
参考: http://www.cnblogs.com/kaituorensheng/p/3595879.html https://github.com/fxsjy/jieba 判断是否包含中文 def ...
- cf1104d二分+数学
#include<bits/stdc++.h> using namespace std; bool ask(int x,int y){ printf("? %d %d\n&quo ...
- MVC开发中的常见错误-04-“System.NullReferenceException”类型的异常在 BBFJ.OA.WebApp.dll 中发生,但未在用户代码中进行处理
未将对象引用设置到对象实例,又名空指针异常,伴随程序员开发的一生. 查看详细信息得知: SetUserRoleInfo() 首先想到的是 IBLL.IRoleInfoService RoleInfo ...
- 迪米特法则(Law of Demeter, LoD)
一个软件实体应当尽可能少地与其他实体发生相互作用 未完待续
- django的FormView中,自定义初始化表单数据的曲折方法
这个技巧,主要是用于表单初始化及回显. 也就是说,如果用户的数据库里有数据,则要将相应的数据显示在表单里, 如果用户的数据库里没有数据,才会生成一个空白的表单给用户, 这样才显得专业塞! 而我面对的尴 ...