Maven中的POM文件分析(二)

mavan中项目之间的三种关系

1.依赖关系

例如:my-app 项目依赖 junit 项目,pom.xml文件的结构如下:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

2.继承关系(继承关系有两种情况)

情况一:子项目 (my-module)和父项目 (parent) 的 pom.xml 在同一目录下

  结构如下:
  |-- my-module
  |   `-- pom.xml
  `-- pom.xml

子项目 my-module的pom.xml配置如下:

<project>
  <parent>
    <groupId>com.mycompany.app</groupId>
    <artifactId>my-app</artifactId>
    <version>1</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-module</artifactId>
  <version>1</version>
</project>

情况二:子项目 (my-module) 和父项目 (parent) 在同一目录下

  结构如下:
   |-- my-module
   |   `-- pom.xml
   `-- parent
     `-- pom.xml

子项目 my-module的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>


3. 聚合关系(有两种情况)

聚合关系中父项目的pom.xml文件配置需要满足两个要求:

a.将父�目的pom.xml的packaging值改为“pom”

b.在父�目的pom.xml中指定子�目的目录


情况一:子项目(one-module,two-module) 和父项目(my-app)的pom.xml在同一目录下

  结构如下:
  |-- one-module
  |   `-- pom.xml
  |-- two-module
  |   `-- pom.xml
  `-- pom.xml

父项目(parent)的pom.xml配置如下:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
  <packaging>pom</packaging>
  <modules>
    <module>one-module</module>
    <module>two-module</module>
  </modules>
</project>


情况二:子项目(one-module,two-module) 和父项目(parent)在同一目录下

结构如下:

 |-- one-module
 |   `-- pom.xml
 |-- two-module
 |   `-- pom.xml
 `-- parent
     `-- pom.xml

父项目(parent)的pom.xml配置如下:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
  <packaging>pom</packaging>
  <modules>
    <module>../one-module</module>
    <module>../one-module</module>
  </modules>
</project>

可用变量:

1. 项目model变量

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

2. 特殊变量

basedir:��前�目所在目�

project.baseUri:当前项目所在的目录,作为一个URI表示。��Maven的2.1.0 maven.build.

timestamp:时间戳,表示开始构建

3. 自定义属性

<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>


仓库的配置:

1. 基本元素

* id:仓库声明的唯一id
* name:仓库名称
* url:指向了该仓库的地址
* layout:声明仓库的布局
* releases:enabled值为true,表示支持JBoss Public Maven仓库的发布版本下载
* snapshots:enabled的值为false,表示不支持JBoss Public Maven仓库的快照版本下载

2. 远程仓库的配置

<repositories>
   <repository>
     <id>jboss-public-repository-group</id>
     <name>JBoss Public Maven Repository Group</name>
     <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
     <layout>default</layout>
     <releases>
       <enabled>true</enabled>
     </releases>
     <snapshots>
       <enabled>false</enabled>
     </snapshots>
</repositories>

3. 插件仓库的配置

<pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Maven Plugin Repository</name>
      <url>http://repo1.maven.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <enabled>true</enabled>
      </releases>
    </pluginRepository>
  </pluginRepositories>


本文出自 “黎静技术博客” 博客,转载请与作者联系!

你可能感兴趣的:(maven,pom.xml,项目,构建,依赖)