`
JackyCheng2007
  • 浏览: 253542 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

为什么要用maven - 2

阅读更多
本文是接着前面的一片继续记录maven的学习笔记:[url]http://jackycheng2007.iteye.com/blog/923791
[/url]

法宝2. POM 项目对象模型 - 继续
Project Inheritance - 项目继承
前面说到了项目在maven里被看成是object,既然如此,肯定有继承的功能。这个功能很有用,等于是让我们的项目profile也能被重用。试想,如果你有很多相似的项目,比如采用ssh开发的一系列项目,你的每个项目的pom里面肯定有不少重复的部分。有了继承,你就可以把这些公用的部分都抽取出来,然后每个子项目再继承,从而达到重用的目的。本来嘛,继承就是反应了is-a的关系,一个supper项目下面的子项目天生就和supper项目有is-a的关系吧。这样也不算滥用继承了,哈哈。
怎么继承呢?

接着上篇文章的最后一个例子,如果他下面有个子模块需要继承它的话:
<project>
  <parent>
    <groupId>com.mycompany.app</groupId>
    <artifactId>my-app</artifactId>
    <version>1</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>my-module</artifactId>
</project>

这个子模块就继承了父模块的groupid和version等信息。等一下,这里有个问题。就凭
<groupId>com.mycompany.app</groupId>,子模块怎么找到supper的pom啊?
是的,如果supper项目已经安装在local的repository里面了或者supper的pom在约定的目录,也就是子模块的上一级目录(如下),就可以。
引用

my-app|-- my-module
      |   `-- pom.xml
      `-- pom.xml


那么,如果不巧,这两条都不是呢?比如:
引用

.
|-- my-module
|   `-- pom.xml
`-- parent
     `-- pom.xml

那我们还可以自己指定位置:
<project>
  <parent>
    <groupId>com.mycompany.app</groupId>
    <artifactId>my-app</artifactId>
    <version>1</version>
    <relativePath>.../parent/pom.xml</relativePath>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>my-module</artifactId>
</project>


Project Aggregation - 项目集合
通过项目继承,我们再管理或者构建子项目的时候就能从用parent项目的pom。反过来呢?如果我们要构建一个完整的项目,是不是经常需要集合多个子项目来打包呢。Project Aggregation就是解决这个问题的。
怎么做呢?得满足两点:
引用

父项目的pom里面的packaging的值设为 "pom" .
在父项目的pom里面自定子项目的目录


如果我们想把my-module集合到my-app里面,做如下的修改:
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
  <packaging>pom</packaging>

  <modules>
    <module>my-module</module>
  </modules>
</project>

上面,没有写路径,也是因为如果遵循maven的目录约定。如果不是那就得写:
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
  <packaging>pom</packaging>

  <modules>
    <module>../my-module</module>
  </modules>
</project>

可见,约定是一种很好的方式,可以节省代码,也容易形成共识。
Project Interpolation and Variables - 使用变量
有可能在pom里面你会在多处用到同一个字符串片段,比如路径。meven支持变量的声明和引用,这样你就可以防止hard code了。
怎么引用变量?看看下面:
<version>${project.version}</version>

$符号加上大括号,用点来分级访问。很方便。如果有继承关系,会采用子类的值。
有哪些可用的变量呢?

Project Model Variables
pom里面的任何单值元素都可以被当做变量来引用,比如:
引用

${project.groupId}, ${project.version}, ${project.build.sourceDirectory}


Special Variables
${basedir}, 当前项目所在目录
${project.baseUri}, 当前项目所在目录URI. Since Maven 2.1.0
${maven.build.timestamp}, 项目build的开始时间. Since Maven 2.1.0-M1

Properties
你也可以把pom里面定义的Properties当成变量来引用。
<project>
  ...
  <properties>
    <mavenVersion>2.1</mavenVersion>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-artifact</artifactId>
      <version>${mavenVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-project</artifactId>
      <version>${mavenVersion}</version>
    </dependency>
  </dependencies>
  ...
</project>

通过Properties,你就可以自定义一些变量了,哈哈。


0
1
分享到:
评论

相关推荐

    apache-maven-3.6.3-bin

    apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-...

    apache-maven-3.8.6.zip

    apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-...

    apache-maven-3.8.6-bin.tar.tz--test

    apache-maven-3.8.6-bin.tar.tz--test apache-maven-3.8.6-bin.tar.tz--test apache-maven-3.8.6-bin.tar.tz--test apache-maven-3.8.6-bin.tar.tz--test apache-maven-3.8.6-bin.tar.tz--test apache-maven-3.8.6-...

    Maven exec-maven-plugin:执行外部命令的实践指南

    本文详细介绍了exec-maven-plugin的基本概念、配置方法、执行简单和系统脚本、捕获命令输出、条件执行、并发执行、使用环境变量、错误处理、高级配置、使用案例以及局限性。通过这些知识点,读者可以更加自信地在...

    apache-maven-3.6.1.zip分享给需要的同学

    apache-maven-3.6.1.zip分享给需要的同学 apache-maven-3.6.1.zip分享给需要的同学 apache-maven-3.6.1.zip分享给需要的同学 apache-maven-3.6.1.zip分享给需要的同学 apache-maven-3.6.1.zip分享给需要的同学apache...

    Maven使用tomcat8-maven-plugin插件.docx

    要使用 tomcat8-maven-plugin 插件,首先需要在 Maven 的 POM 文件中添加插件依赖。下面是一个示例: ``` &lt;groupId&gt;org.apache.tomcat.maven &lt;artifactId&gt;tomcat8-maven-plugin &lt;version&gt;3.0-r1655215 ``` ...

    apache-maven-3.3.9.rar

    apache-maven-3.3.9.rarapache-maven-3.3.9.rarapache-maven-3.3.9.rarapache-maven-3.3.9.rarapache-maven-3.3.9.rarapache-maven-3.3.9.rarapache-maven-3.3.9.rarapache-maven-3.3.9.rarapache-maven-3.3.9....

    apache-maven-3.9.0-bin.tar

    "linux版本maven"指的是Maven在Linux操作系统上的使用,这通常意味着兼容性、命令行工具的使用以及与Linux环境的集成。Linux用户可以利用bash脚本、alias或者systemd服务来自动化和集成Maven的使用。 总的来说,...

    apache-maven-3.9.6-bin

    Maven 使用一个约定优于配置的哲学,这意味着它遵循一套默认的项目结构,减少了为新项目配置大量构建脚本的需要。它的核心概念是项目对象模型(Project Object Model,POM),这是一个XML文件,包含了项目的配置信息...

    apache-maven-3.8.8.zip

    apache-maven-3.8.8.zip压缩包内容: apache-maven-3.8.8-bin.tar.gz apache-maven-3.8.8-bin.zip apache-maven-3.8.8-src.tar.gz apache-maven-3.8.8-src.zip

    maven-compiler-plugin-3.8.0-source-release插件

    对于大型项目,推荐使用 Maven 的私有仓库来存储常用插件,以提高构建速度。 ** 总结** `maven-compiler-plugin-3.8.0-source-release` 是 Maven 生态系统中不可或缺的一部分,它提供了可靠的源代码编译功能,使得...

    apache-maven-3.6.0.zip

    2. **conf** 目录:包含Maven的配置文件,如`settings.xml`,它是Maven的全局配置,用于设置本地仓库路径、代理服务器、镜像等。 3. **lib** 目录:包含Maven运行时所需的jar文件,这些库文件支持Maven的各种功能,...

    最新Maven-apache-maven-3.8.1-Repository-配置好的

    2. **添加Maven到PATH**: 将Apache Maven-3.8.1的`bin`目录路径添加到系统环境变量`PATH`中,这样命令行可以识别`mvn`命令。 3. **配置settings.xml**: Maven的配置文件`settings.xml`通常位于`用户主目录\.m2\`下...

    maven-deploy-plugin-2.8.2.jar

    maven-deploy-plugin-2.8.2.jar

    apache-maven-3.5.3-src

    Apache Maven 是一个强大的项目管理工具,它主要用于Java项目的构建、依赖管理和项目信息管理。Maven 3.5.3是该工具的一...对于Java开发者而言,掌握Maven的使用无疑能够提高开发效率,使项目管理变得更加有序和高效。

    maven资源 apache-maven-3.3.9-bin.zip

    在Maven中,项目的构建过程被定义为一系列的阶段,如编译、测试、打包、集成测试、部署等,这些阶段构成了Maven的生命周期。每个阶段都可以通过特定的插件来执行,例如,`maven-compiler-plugin`用于编译源代码,`...

    apache-maven-3.8.4-bin.zip maven下载鬼慢

    使用Maven时,要注意定期更新到最新版本,以获取最新的特性和安全修复。 总的来说,Apache Maven是Java开发不可或缺的一部分,它通过标准化的构建过程和自动化依赖管理,极大地提高了开发效率。正确配置和使用Maven...

    maven-shared-utils-3.2.1.jar

    maven-shared-utils-3.2.1.jar

Global site tag (gtag.js) - Google Analytics