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>
本文出自 “黎静技术博客” 博客,转载请与作者联系!