Я новичок в Hyperledger Fabric. Когда я создаю чейнкод, написанный на java, после установки на одноранговых узлах из контейнера cli, что-то не так:
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 в хосте и контейнере?
Я просмотрел репозиторий 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, мне все еще интересно, почему я могу успешно построить на хосте, а не в контейнере cli?
«cli» динамически использует образ докера «hyperledger/fabric-javaenv» для компиляции кода. Вам необходимо обогатить этот «hyperledger/fabric-javaenv» всеми зависимостями, чтобы ваша сборка «cli» также была успешной.
Было бы полезно отредактировать этот ответ, чтобы вместо этого использовать репозиторий maven { url 'https://jitpack.io' }
, как показано в ответе @Benas, к сожалению, очередь редактирования заполнена.
Спасибо. Для версии, которую я ищу (1.12.2), это репо, в котором она есть. Я должен обновить и указать на то, что является самым новым, и указать на самое последнее (похоже, 1.14), не знаю, где это.
На самом деле, вы должны использовать
repositories {
mavenLocal()
mavenCentral()
maven {
maven { url 'https://jitpack.io' }
}
}
репо вместо репо из другого ответа, поскольку это репо рекомендуется в официальной документации json-schema
.
Цитировать:
Add the JitPack repository and the dependency to your pom.xml as follows:
(см.: https://github.com/everit-org/json-схема)
Да, maven {url "jitpack.io"}. работал.
Я пробовал оба этих URL-адреса, но не работал... не знаю почему. репозитории { maven { url "репозиторий.mulesoft.org/nexus/content/repositories/public" } maven { url 'jitpack.io' } }
@Raj Я думаю, что URL-адреса репо должны начинаться с https://, поэтому попробуйте добавить его на jitpack.io.
Вы запускаете это из-за прокси?