Java 导入maven依赖项

Java 导入maven依赖项,java,maven,dependencies,pom.xml,Java,Maven,Dependencies,Pom.xml,我有两个关于这个话题的问题。我想将以下依赖项导入到我的项目中: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <depen

我有两个关于这个话题的问题。我想将以下依赖项导入到我的项目中:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>${jackson.version}</version>
</dependency>

com.fasterxml.jackson.core
杰克逊核心
${jackson.version}
com.fasterxml.jackson.core
杰克逊数据绑定
${jackson.version}
com.fasterxml.jackson.core
杰克逊注释
${jackson.version}
这是我的两个问题

  • 有没有一种方法可以用一条导入语句导入所有3条语句?他们都有相同的groupId,这3个是该groupId中唯一的一个。那么,我可以不使用artifactId,直接导入groupId中的所有内容吗
  • Springboot似乎已经导入了这些jackson库,但版本较旧(2.6.5)。当我放置这些依赖项(2.7.3)时,它会覆盖springboot依赖项吗
  • 1.相同groupId的较小重要语句 据我所知,即使使用相同的groupId,也无法用一条import语句导入所有三个工件。但是,通过使用一个变量来确保版本都是相同的,这样做是正确的。如果您发现不同依赖项的版本号存在冲突,这将有助于找到下一个答案

    2.解决依赖冲突 不完全是。这两个依赖项都将包含在类路径中,这可能会导致以后的冲突(或者由于Java首先查找旧版本而无法解决新版本函数的问题)。处理这个问题有两种方法。一种是使用插件来搜索可能发生的冲突,如果您不确定的话。一旦您理解了冲突(比如Springboot和您的软件),您就可以排除Springboot引入的特定依赖项,从而使您的版本成为其他依赖项使用的版本。您可以通过在声明Springboot依赖项时添加排除项来做到这一点:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${springboot.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>jackson-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>jackson-databind</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>jackson-annotations</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    
    
    org.springframework.boot
    在这个问题上,与您的项目“最近”的依赖项(即在pom中声明而不是依赖项的pom)将首先由您的程序使用,因此您不必排除工件。然而,我还没有发现这在实践中总是有效的(或者可能还有其他的事情发生)。在另一种情况下,排除非常有用,即您正在创建一个包含所有依赖项的着色Jar,并且不希望包含同一个Jar的多个版本

    一,。相同groupId的较小重要语句 据我所知,即使使用相同的groupId,也无法用一条import语句导入所有三个工件。但是,通过使用一个变量来确保版本都是相同的,这样做是正确的。如果您发现不同依赖项的版本号存在冲突,这将有助于找到下一个答案

    2.解决依赖冲突 不完全是。这两个依赖项都将包含在类路径中,这可能会导致以后的冲突(或者由于Java首先查找旧版本而无法解决新版本函数的问题)。处理这个问题有两种方法。一种是使用插件来搜索可能发生的冲突,如果您不确定的话。一旦您理解了冲突(比如Springboot和您的软件),您就可以排除Springboot引入的特定依赖项,从而使您的版本成为其他依赖项使用的版本。您可以通过在声明Springboot依赖项时添加排除项来做到这一点:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${springboot.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>jackson-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>jackson-databind</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>jackson-annotations</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    
    
    org.springframework.boot
    在这个问题上,与您的项目“最近”的依赖项(即在pom中声明而不是依赖项的pom)将首先由您的程序使用,因此您不必排除工件。然而,我还没有发现这在实践中总是有效的(或者可能还有其他的事情发生)。在另一种情况下,排除非常有用,即您正在创建一个包含所有依赖项的着色Jar,并且不希望包含同一个Jar的多个版本