依赖关系和模块是不同的概念.
Maven可以管理内部和外部依赖项.Java项目的外部依赖项可能是库,例如Plexus,Spring Framework或Log4J.Web应用程序项目根据包含服务类,模型对象或持久性逻辑的另一个项目来说明内部依赖性.
简而言之,一个依赖说:"要构建我的项目,我需要使用这个库".
groupId:这些groupId组是一组相关的工件.它通常类似于Java包名称.例如,它groupId org.apache.maven是groupIdApache Maven项目生成的所有工件的基础.artifactId:这artifactId是项目的主要标识符.生成工件时,将使用该工件命名此工件artifactId.的artifactId,groupId组合必须是唯一的.换句话说,您不能拥有两个具有相同artifactId和的单独项目groupId.而且,artifactId对于给定的,你不能拥有相同的东西groupId.version:当工件被释放时,它将以版本号发布,例如"1.0","1.1.1"或"1.1.2-alpha-01".您还可以使用所谓的快照版本来处理正在开发的组件,例如"1.0-SNAPSHOT".classifier:不需要分类器,通常不使用.当你需要从生产单一项目的多种文物只有相关的:它则作为在文件名的区别,否则将被用做简单的artifactId和version,从而发生冲突.在POM中,它看起来像这样:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
...
<dependencies>
<dependency>
<groupId>org.some.project</groupId>
<artifactId>my-project</artifactId>
<version>4.0</version>
</dependency>
...
</dependencies>
...
</project>
Run Code Online (Sandbox Code Playgroud)
这声明了对my-project由给定坐标标识的库的依赖性.
模块用于多模块Maven项目的上下文中.从Maven书中:
多模块项目只管理一组其他子项目或模块.[...]在设置多模块项目时,您只是告诉项目其构建应包含指定的模块.多模块构建将用于在单个构建中将模块组合在一起.
简而言之,有一个模块说"要构建我的项目,我需要构建这个项目".
在POM中,这样做是这样的:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.codehaus.mojo</groupId>
<artifactId>my-parent</artifactId>
<version>2.0</version>
<packaging>pom</packaging>
<modules>
<module>my-project</module>
<module>another-project</module>
</modules>
</project>
Run Code Online (Sandbox Code Playgroud)
你说这个项目,由org.codehaus.mojo:my-parent:2.0:pom,标识,2个模块,是my-project和another-project.因此,在构建时my-parent,也将构建这两个模块.
| 归档时间: |
|
| 查看次数: |
5152 次 |
| 最近记录: |