2016-01-06 02:34:24

继承与聚合

(八)maven移植

讲到maven移植,大家可能第一反应就是是指将一个java项目部署到不同的环境中去,实际上,在maven中,它认为当你参加一个组织或一个开源软件的开发时,将它下载到本地机,将它纳入到你的开发系统中的过程被称为maven的移植。

Maven移植和你的操作系统,jdk版本,你的开发工具等等有关。

maven移植级别:

不可移植,不可移植,只能在你的本地机上进行开发,换到其他地方都不可以继续开发和应用了;

环境移植,你的项目针对几个特定的环境进行了配置,它在这几个环境下是可以被运行的,但是把它移植到其他 的未定义的环境之中的话,会出现不可继续运用和开发的情况;

组织内部可移植,通常大家在公司里面开发的时候回发现如果你把东西带回家里,就不可以再使用了;

广义可移植,一些开源软件,如apache,可以在各个系统上进行移植。

Maven 的移植其实是依赖于profile来完成的,profile一般位于pom.xml文件中,它允许你为移植或特殊的需要,自定义一个特殊的构建。

还记得我们上一篇提到的将一个已有的项目交由maven管理?

profile可以几乎覆盖所有的pom元素

当然,也可以将profile抽取到profiles.xml文件中,将这种profile称为外部profile。

例子?

Mvn clean install –PrunTest

会跳过测试用例,因为maven3已经不再支持外部profile,认为这种profile不是很好

(九)maven属性过滤

(十)复杂的多项目管理

多项目管理是maven的核心部分,存在如何集中管理的问题。

从简单的两个项目开始:

新需求1:我们有一个web项目,依赖于一个java项目,如何组织他们的pom文件?

首先创建一个java项目,test1

mvn archetype:generate -DgroupId=com.test.maven -DartifactId=test1 -DpackageName=com.test.maven.test1

将java工程转换成eclipse工程,mvn eclipse:eclipse,并导入到eclipse中;

创建一个web工程, testweb

mvn archetype:generate -DgroupId=com.test.maven -DartifactId=testweb -DpackageName=com.test.maven.testweb -DarchetypeArtifactId=maven-archetype-webapp

把web工程转换为eclipse工程,mvn eclipse:eclipse -DwtpVersion=2.0,并导入到eclipse中;

我们肯定会想到在testweb的pom文件中增加对test1的依赖

 <dependencies>
<dependency>
<groupId>com.test.maven</groupId>
<artifactId>test1</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>

但是这样会出现问题,一旦对test1的代码进行了修改,需要转到test1目录下,使用mvn clean install对它重新进行编译打包,安装到本地仓库里;然后再转到testweb目录底下,再次mvn clean install,把它重新打包和安装到本地仓库中去,很麻烦。

我们希望只执行一次mvn clean install 将可以将test1和testweb都重新编译、打包、安装。

创建一个简单工程test,File-new-maven project ,注意只勾选

packaging选择pom(有3种选项:jar 、pom、 war)。

这样生成的工程test只有pom.xml文件。

在test中,使用pom的module元素,将test1和testweb追加成test的子项目

<modules>
<module>../test1</module>
<module>../testweb</module>
</modules>

在test1和testweb的pom中指定其parent

<parent>
<groupId>com.test.maven</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePth>../test</relativePath>
</parent>

这样就可以以test为入口,来对这两个项目进行管理,只需要在test目录下执行一次 mvn clean install

结果build failure,因为????

(十一)、maven相关工具介绍

maven的eclipse插件m2eclipse;maven的仓库管理器Nexus;maven的settings.xml详解

Maven的eclipse插件:

除了创建简单工程,还可以使用Maven的骨架来创建不同规格的maven项目

Quickstart:创建java工程; webapp:创建web工程;pom是没有骨架的

除了创建工程外,还可以从SCM(git svn cvs)导入工程。

maven学习--进阶篇的更多相关文章

  1. maven学习--基础篇

    2016-01-5 16:13:43 发现一些错误,文章修改中…… (部分图片截取自其他地方,不是很清楚) 一. maven的项目创建和基本命令 maven是一个项目管理工具,包含了一个项目对象模型P ...

  2. Python 学习 —— 进阶篇(装饰器、类的特殊方法)

    Python基础部分学完之后,在进入其OOP部分前,先理解一下其装饰器这种结构,其功能可类比于Java中的面向切面编程,下面参见具体实例: def log(f): def fn(x): print ' ...

  3. JavaScript学习笔记 - 进阶篇(1)- JS基础语法

    前言 JavaScript能做什么? 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登陆验证等) JS进阶篇学习什么? 在JavaS ...

  4. PHP学习笔记 - 进阶篇(11)

    PHP学习笔记 - 进阶篇(11) 数据库操作 PHP支持哪些数据库 PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Syba ...

  5. PHP学习笔记 - 进阶篇(10)

    PHP学习笔记 - 进阶篇(10) 异常处理 抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出之后,后面的代码将不会再被 ...

  6. PHP学习笔记 - 进阶篇(9)

    PHP学习笔记 - 进阶篇(9) 图形图像操作 GD库简介 GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新 ...

  7. PHP学习笔记 - 进阶篇(8)

    PHP学习笔记 - 进阶篇(8) 日期与时间 取得当前的Unix时间戳 UNIX 时间戳(英文叫做:timestamp)是 PHP 中关于时间与日期的一个很重要的概念,它表示从 1970年1月1日 0 ...

  8. PHP学习笔记 - 进阶篇(7)

    PHP学习笔记 - 进阶篇(7) 文件操作 读取文件内容 PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中. $conte ...

  9. PHP学习笔记 - 进阶篇(6)

    PHP学习笔记- 进阶篇(6) 会话控制(session与cookie) 当前的Cookie为: cookie简介 Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据. ...

随机推荐

  1. Python的第二次作业

    羊车门问题 1.我认为 会 增加选中汽车的机会,原因如下: 不换的情况:对于参赛者而言无论选哪一扇门都有1/3的几率能获得车子. 换的情况  :对于参赛者而言,有两种情况「1.参赛者第一次就选择到了正 ...

  2. 『PyTorch』第九弹_前馈网络简化写法

    『PyTorch』第四弹_通过LeNet初识pytorch神经网络_上 『PyTorch』第四弹_通过LeNet初识pytorch神经网络_下 在前面的例子中,基本上都是将每一层的输出直接作为下一层的 ...

  3. EBS R12使用接口表往已存在的供应商地址下创建新的地点

    在供应商 "测试供应商A" 下已经有了两个地址,分别为 "地址A","地址B",现在由于某些原因,需要在地址A下面创建新的地点. 由于业务需 ...

  4. Docker安装及基础知识

    一.安装 & 启动 1.安装Docker [root@tokyo ~]# yum install docker 2.启动Docker服务 (1)旧式的 sysv 语法 [root@tokyo ...

  5. MessageFormat格式化数字

    使用MessageFormat格式化数字,有一个很隐蔽的技巧点: public static void main(String[] args) { MessageFormat mf = new Mes ...

  6. forget word qz_c

    1● circum s ək ʌm 圆周 环绕 周围   2● co 元音前 共同   3● col 4● cor 铺音前 共同   5● com 6● con 共同  

  7. 蓝桥杯—ALGO-18 单词接龙(DFS)

    问题描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母, 要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次) ,在两个单词相连时,其 ...

  8. string logo online customization

    url: http://www.asciiarts.net/ example :  hello

  9. bzoj1215

    题解: 暴力枚举每一种方案,然后hash判重 代码: #include<bits/stdc++.h> #define eps 1e-7 using namespace std; ],r[] ...

  10. Flask初级(一)创建及运行flash

    和前面的django差不多,选个类型,定义个目录. 选个模板解释器,定义一个模板文件夹名称. Create就创建成功了. 运行一下.会显示 Hello World! 最好给它换个运行环境,建个虚拟环境 ...