Gradle 编译在 Hyperledger Fabric 中"Could not find com.github.everit-org.json-schema:org.everit.json.sch



我是Hyperledger Fabric的新手。当我从 cli 容器安装在对等节点上后实例化用 java 编写的链码时,出现了一些问题:

FAILURE: Build failed with an exception.
* What went wrong:  
Could not resolve all files for configuration ':compileClasspath'.  
> Could not find com.github.everit-org.json-schema:org.everit.json.schema:1.11.1.
  Searched in the following locations:  
      file:/root/.m2/repository/com/github/everit-org/json-schema/org.everit.json.schema/1.11.1/org.everit.json.schema-1.11.1.pom
      file:/root/.m2/repository/com/github/everit-org/json-schema/org.everit.json.schema/1.11.1/org.everit.json.schema-1.11.1.jar
      https://repo.maven.apache.org/maven2/com/github/everit-org/json-schema/org.everit.json.schema/1.11.1/org.everit.json.schema-1.11.1.pom
      https://repo.maven.apache.org/maven2/com/github/everit-org/json-schema/org.everit.json.schema/1.11.1/org.everit.json.schema-1.11.1.jar  
  Required by:
      project : > org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:1.4.2

我认为这可能是 maven 存储库的问题,但是当我在主机的终端中使用 gradle 时,它运行正常,如下所示:

fabric@ubuntu:~/fabric1.4/fabric-samples/chaincode/master-liuqi/java$ sudo /opt/gradle/bin/gradle -b build.gradle build
Task :compileJava
Note: /home/fabric/fabric1.4/fabric-samples/chaincode/master-liuqi/java/src/main/java/org/hyperledger/fabric/example/SimpleChaincode.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
BUILD SUCCESSFUL in 0s  
2 actionable tasks: 2 executed

下面是我的build.gradle,它与hyperleger的示例链码相同。

plugins {
    id 'com.github.johnrengelman.shadow' version '2.0.3'
    id 'java'
}
group 'org.hyperledger.fabric-chaincode-java'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
    mavenLocal()
    mavenCentral()
}
dependencies {
    compile group: 'org.hyperledger.fabric-chaincode-java', name: 'fabric-chaincode-shim', version: '1.+'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}
shadowJar {
    baseName = 'chaincode'
    version = null
    classifier = null
    manifest {
        attributes 'Main-Class': 'org.hyperledger.fabric.example.SimpleChaincode'
    }
}

有没有办法解决这个问题? 在主机和容器中运行 Gradle 构建有什么区别?

实际上,你应该使用

repositories {
    mavenLocal()
    mavenCentral()
    maven {
        maven { url 'https://jitpack.io' }
    }
}
回购

而不是来自其他答案的回购,因为官方json-schema文档中建议使用此回购。

报价:

将 JitPack 存储库和依赖项添加到您的 pom 中.xml作为遵循:

(见:https://github.com/everit-org/json-schema(

我搜索了maven存储库(https://mvnrepository.com/artifact/org.hyperledger.fabric-chaincode-java/fabric-chaincode-shim/1.4.2(,发现这个依赖项不在maven中央存储库中。在build.gradle中添加存储库后,如下所示:

repositories {
    mavenLocal()
    mavenCentral()
    maven {
        url "https://repository.mulesoft.org/nexus/content/repositories/public/"
    }
}

由于我不熟悉 Gradle,我仍然想知道为什么我可以在 Host 中成功构建,而在 CLI 容器中失败?

最新更新