首页 > 解决方案 > 无法在 gradle java 项目中使用 Manifold

问题描述

我有一个基于 JDK 11 的项目,我想在我的 java 项目中使用 Manifold ( http://manifold.systems/ )。

我的 build.gradle:

 plugins {
    id 'java'
}
//

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

repositories {
    maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
}

dependencies {
    implementation 'org.projectlombok:lombok:1.18.18'
    implementation "io.vavr:vavr:0.10.3"
    implementation 'systems.manifold:manifold-science:2021.1.25'
    compileOnly 'org.projectlombok:lombok:1.18.20'
    annotationProcessor 'org.projectlombok:lombok:1.18.20'
    annotationProcessor group: 'systems.manifold', name: 'manifold-ext', version: '2021.1.25'
    
    testCompileOnly 'org.projectlombok:lombok:1.18.20'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'
    testAnnotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess'
    testImplementation 'org.junit.jupiter:junit-jupiter-engine'
}

test {
    useJUnitPlatform()
    testLogging {
        events "passed", "skipped", "failed"
    }
}

我试过这个:

import java.math.BigDecimal;

@Extension
public abstract class ManBigDecimalExt implements ComparableUsing<BigDecimal> {
    /**
     * Supports binary operator {@code +}
     */
    public static BigDecimal plus(@This BigDecimal thiz, BigDecimal that) {
        return thiz.add(that);
    }
}

但它表示没有找到这些 Manifold Annotations:

@Extension
@This

我该怎么办?

标签: javagradlemanifold

解决方案


感谢 Github 页面,它帮助了很多!在浏览了您发送给我的网页后,我找到了解决方案。实际上,在 librarysystems.manifold中,您提到的注释不存在。添加另一个名为manifold-sciencemanifold-ext 类似的实现,

implementation 'systems.manifold:manifold-science:2021.1.25-SNAPSHOT'

或者

implementation 'systems.manifold:manifold-ext:2021.1.25-SNAPSHOT'

并且,添加另一个用于获取库的存储库,

maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }

不要忘记导入库,

import manifold.ext.rt.api.Extension;
import manifold.ext.rt.api.This;
import manifold.ext.rt.api.ComparableUsing;

希望这应该可以解决问题:D


推荐阅读