合约打包说明

最近更新时间:2023-11-20 17:25:56

我的收藏
Java 语言合约示例包请参见 fabric-contract-java

Java 合约打包

1. 在 pom.xml 文件中添加如下所示的本地仓库配置:
<repositories> <repository> <id>my-local-repo</id> <url>file://${project.basedir}/repository</url> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </snapshots> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </releases> </repository> <repository> <id>central</id> <url>https://repo.maven.apache.org/maven2</url> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </snapshots> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </releases> </repository> </repositories>
2. 在 pom.xml 文件中添加如下所示的 maven 插件配置,注意使用指定的版本。
<build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <finalName>chaincode</finalName> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>chaincode.example.SimpleChaincode</mainClass> </transformer> </transformers> <filters> <filter> <!-- filter out signature files from signed dependencies, else repackaging fails with security ex --> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> </configuration> </execution> </executions> </plugin> </plugins> </build>
3. 在 pom.xml 中添加相关依赖,示例如下:
<dependencies> <dependency> <groupId>org.hyperledger.fabric-chaincode-java</groupId> <artifactId>fabric-chaincode-protos</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>org.hyperledger.fabric-chaincode-java</groupId> <artifactId>fabric-chaincode-shim</artifactId> <version>2.3.1</version> <exclusions> <exclusion> <groupId>com.github.everit-org.json-schema</groupId> <artifactId>org.everit.json.schema</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.16</version> </dependency> </dependencies>
4. 使用如下命令将合约依赖下载到 repository 目录中。
mvn dependency:copy-dependencies -DoutputDirectory=repository -Dmdep.useRepositoryLayout=True -Dmdep.copyPom=True
5. 在合约根目录中使用zip -r xxx.zip *命令将合约进行打包。