• maven学习--进阶篇


    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)导入工程。

  • 相关阅读:
    C++ 学习笔记
    面向对象
    多线程
    Spring-扫描注解原理,注解自动扫描原理分析
    Eclipse 中报错的阅读顺序
    Eclipse 常用技巧及常见问题解决
    JAVA高级复习-自定义泛型类、泛型接口的注意点
    JAVA高级复习-泛型的使用
    IntelliJ IDEA学习笔记连载一IntelliJ IDEA中创建Maven工程
    JAVA高级复习-多线程的创建方式二
  • 原文地址:https://www.cnblogs.com/kanhaiba/p/5104267.html
Copyright © 2020-2023  润新知