【问题标题】:Maven - Unable to resolve maven dependency locally for version rangeMaven - 无法在本地解析版本范围的 Maven 依赖项
【发布时间】:2020-08-09 19:14:03
【问题描述】:

我正在尝试编译一个名为 web-server 的 Maven 项目,该项目依赖于指定依赖版本范围 [2.0,3.0) 内的 search-client。但是,由于存储库中的“指定范围内没有适用于 > com.test.search:search-client:jar:[2.0,3.0) 的版本”,编译失败。

这些是我正在遵循的步骤:

  1. 进行更改并在本地构建搜索客户端

这会在我的本地 m2 存储库中为此客户端 pom 构建一个 2.0-SNAPSHOT jar。

  1. 尝试构建依赖于上述的网络服务器

这不会编译并给出以下错误:

[错误] 未能执行项目公共目标:无法解决 项目 com.test.web:common:jar:2.0-SNAPSHOT 的依赖项:失败 收集依赖项 com.test.search:search-client:jar:[2.0,3.0): 没有可用的版本 com.test.search:search-client:jar:[2.0,3.0) 在指定范围内 -> [帮助1]

Web 服务器 POM:

<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>web-parent</artifactId>
        <groupId>com.test.web</groupId>
        <version>2.0-SNAPSHOT</version>
    </parent>

    <artifactId>common</artifactId>
    <packaging>jar</packaging>

    <properties>
        <kotlin.version>1.3.61</kotlin.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>com.test.search</groupId>
            <artifactId>search-client</artifactId>
            <version>[2.0,3.0)</version>
        </dependency>
        
        .
        .
        .
        //Many More Dependencies
    </dependencies>

    <build>
        <sourceDirectory>src/main/kotlin</sourceDirectory>
        <testSourceDirectory>src/test/kotlin</testSourceDirectory>
        <!--<testSourceDirectory>src/test/kotlin</testSourceDirectory>-->
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-source-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-maven-plugin</artifactId>
                <version>${kotlin.version}</version>
                <executions>
                    <execution>
                        <id>compile</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>test-compile</id>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>test-compile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <jvmTarget>1.8</jvmTarget>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <plugins>
            <plugin>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin>
        </plugins>
    </reporting>
</project>

搜索客户端 POM:

<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>search-parent</artifactId>
        <groupId>com.test.search</groupId>
        <version>2.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>search-client</artifactId>
    <packaging>jar</packaging>

    <name>test Search Client</name>

    <dependencies>

        <!-- test Search -->
        <dependency>
            <groupId>com.test.search</groupId>
            <artifactId>search-api</artifactId>
            <version>${project.parent.version}</version>
        </dependency>

        <!-- test -->
        <dependency>
            <groupId>com.test.common</groupId>
            <artifactId>common-client</artifactId>
        </dependency>

        <!-- Languages & Frameworks -->
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib</artifactId>
        </dependency>

        <!-- Utils -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>

        <!-- Testing -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-test-junit</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- Codecs -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-kotlin</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.xolstice.maven.plugins</groupId>
                <artifactId>protobuf-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <artifactId>kotlin-maven-plugin</artifactId>
                <groupId>org.jetbrains.kotlin</groupId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
            </plugin>

        </plugins>
    </build>

</project>

2.0-SNAPSHOT 不是在 [2.0,3.0) 中吗?我被严格要求不要增加版本。另外,如何在这样的maven依赖设计中进行本地开发?

请帮忙,我卡住了!

提前非常感谢:)

【问题讨论】:

    标签: java maven pom.xml


    【解决方案1】:

    根据POM Reference, Version Order Specification

    "1-snapshot" 1" 1-sp"(限定符填充)

    2.0-SNAPSHOT少于2.0,后者一直在 Maven 中:快照版本是下一个发行版本的预版本。

    所以,不,2.0-SNAPSHOT 不属于[2.0,3.0) (2.0 (1,3.0) (1

    而且,您的 Web 服务器 POM 中有一个错字:

                <version>_____3,0)</version>
    

    【讨论】:

    • 修正了错字 :) 感谢您让我知道快照版本。
    猜你喜欢
    • 2016-04-17
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 2014-05-03
    相关资源
    最近更新 更多