在maven pom.xml中使用哪个范围

时间:2017-04-25 09:09:48

标签: maven scope

我有一个项目" framework-ws"包含3个模块(api,字典,webapp)。 该项目用于具有多个其他Web服务项目的父项目。

例如,项目" core-ws"有" framework-ws"为了父母。它还包含3个模块(api,字典,webapp)。 每个模块都将框架作为依赖。

  • core-ws-api =>框架-WS-API
  • core-ws-dictionary =>框架-WS-字典
  • core-ws-webapp =>框架-WS-web应用
  • (子项目=>依赖项)

现在我有其他依赖项(例如lombok)在每个项目中使用(框架+子项目)。

我不明白我需要声明这种依赖的地方。

  1. 在父项目中使用"提供"范围,并在每个 无范围的儿童项目
  2. 在没有范围的父项目中,每个项目都没有依赖项 儿童项目
  3. 我没有想到的另一种解决方案
  4. 第二个解决方案似乎更清晰,因为我不需要在每个pom.xml中复制依赖项。但我不知道这是否是最好的做法。

    编辑:这是项目结构的图片。 enter image description here

1 个答案:

答案 0 :(得分:1)

在您的父pom中使用依赖关系管理部分,请参阅https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>
    </dependencies>
</dependencyManagement>

然后在您的子pom中,您将使用依赖项但不指定版本,即将在父项中为所有子项指定一次版本。您仍然需要在每个模块中包含依赖项。

<dependencies>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
    </dependency>
</dependencies>

就范围而言,请阅读此https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope,默认范围是编译,这是您通常使用的内容。我认为你对阅读问题的范围含义感到困惑。