【问题标题】:How to resolve a Maven dependency of type pom?如何解决 pom 类型的 Maven 依赖项?
【发布时间】:2021-02-15 21:18:15
【问题描述】:

我正在尝试在 Maven 中导入库 Kotlin Multiplatform

This 是 Github 仓库吗(当然其实并不重要)

重点是,它表示可以使用 Gradle 的此依赖项导入它:

dependencies {
   implementation("com.github.ajalt.colormath:colormath:2.0.0")
}

显然,仅将其转换为 Maven 是行不通的:

    <dependencies>
        ...

        <dependency>
            <groupId>com.github.ajalt.colormath</groupId>
            <artifactId>colormath</artifactId>
            <version>2.0.0</version>
            <type>jar</type>
        </dependency>
    </dependencies>

所以我将它的 pom 添加到项目中,正如 this answer 解释的那样:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.github.ajalt.colormath</groupId>
                <artifactId>colormath</artifactId>
                <version>2.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

这个依赖被解析了(只能解析为pomtype。然后我添加为dependency

    <dependencies>
        ...

        <dependency>
            <groupId>com.github.ajalt.colormath</groupId>
            <artifactId>colormath</artifactId>
            <version>2.0.0</version>
            <type>jar</type>
        </dependency>
    </dependencies>

还是找不到。

我还添加了repo1,因为我没有看到Maven 在哪里寻找这个工件:

    <repositories>
        <repository>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo1.maven.org/maven2</url>
        </repository>
    </repositories>

但仍然没有成功。我不明白为什么它不起作用。

代码可以在repo1找到,但是Maven没有解决。

这一定是个很简单的东西我这里没看懂,请大家帮忙。

【问题讨论】:

    标签: java maven kotlin kotlin-multiplatform


    【解决方案1】:

    GitHub 指向 Maven 中心的链接指向一个裸 POM 工件,没有任何依赖项和/或附加的 JAR。

    看起来 Kotlin MP 上传了具有不同 artifactId 的 JVM 特定工件 - 在这种情况下为 colormath-jvm。请查看Maven Central对应的目录。

    我建议在 POM 中使用以下依赖声明:

    <groupId>com.github.ajalt.colormath</groupId>
    <artifactId>colormath-jvm</artifactId>
    <version>2.0.0</version>
    

    【讨论】:

    • 虽然这可行,但我需要了解解决此问题的思考过程 - 你怎么知道它必须以-jvm 为后缀?我原始链接中的pom.xml 不包含有关您链接的网址的任何信息。你是怎样找到它的?是因为您知道Kotlin Multiplatform 及其发布过程还是Maven-specfic?
    • 1.工件 id colormath 的已发布工件仅包含 pom.xml,没有 JAR 2. Maven 存储库布局 - 请参阅 cwiki.apache.org/confluence/display/MAVEN/… 3. Gradle 经验有限 - 足以知道 pom.xml 是由 Maven 发布插件构建的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2012-05-28
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多