gpt4 book ai didi

Maven: "dependency vs module "

转载 作者:行者123 更新时间:2023-12-04 13:37:42 25 4
gpt4 key购买 nike

我想知道两者的区别。据我了解,依赖项需要一个版本等,但是可以在没有版本的情况下定义模块,并且它采用父版本。还有更多吗?

最佳答案

依赖项和模块是不同的概念。

来自 Maven book关于依赖:

Maven can manage both internal and external dependencies. An external dependency for a Java project might be a library such as Plexus, the Spring Framework, or Log4J. An internal dependency is illustrated by a web application project depending on another project that contains service classes, model objects, or persistence logic.



简单地说,一个依赖在说:“要构建我的项目,我需要 使用 这个库”。

Maven 中的依赖项由其 coordinates 定义。 ,由 4 个元素组成:
  • groupId : groupId对一组相关 Artifact 进行分组。它通常类似于 Java 包名称。例如,groupId org.apache.maven是基础groupId对于 Apache Maven 项目生成的所有 Artifact 。
  • artifactId : artifactId是项目的主要标识符。当你生成一个 Artifact 时,这个 Artifact 将被命名为 artifactId . artifactId , groupId组合必须是唯一的。换句话说,您不能有两个具有相同 artifactId 的单独项目。和 groupId .此外,您不能拥有相同的 artifactId对于给定的 groupId .
  • version :发布 Artifact 时,会附带一个版本号,例如“1.0”、“1.1.1”或“1.1.2-alpha-01”。您还可以为正在开发的组件使用所谓的快照版本,例如“1.0-SNAPSHOT”。
  • classifier : 不需要分类器,一般不使用。它仅在您需要从单个项目生成多个 Artifact 时才相关:然后它作为文件名的区别,否则将简单地使用 artifactIdversion并因此产生冲突。

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

    这声明了对 my-project 的依赖。由给定坐标标识的库。

    multi-module Maven project 的上下文中使用了一个模块.来自 Maven 书:

    A multimodule project simply manages a group of other subprojects or modules. [...] When setting up a multimodule project, you are simply telling a project that its build should include the specified modules. Multimodule builds are to be used to group modules together in a single build.



    简而言之,拥有一个模块就是说“要构建我的项目,我需要 构建 这个项目”。

    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>

    您是说这个项目,由 org.codehaus.mojo:my-parent:2.0:pom 标识, 声明了 2 个模块,它们是 my-projectanother-project .因此,当您构建 my-parent ,这两个模块也将被构建。

    关于Maven: "dependency vs module ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35589017/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com