Introduce top-level Gradle build

- Convert ethereumj-studio build from Maven to Gradle as well
 - Extract common build elements to top-level build.gradle
 - Update top-level README accordingly
This commit is contained in:
Chris Beams 2014-12-26 23:51:34 +01:00
parent c396eb11ea
commit 0900039bdd
No known key found for this signature in database
GPG Key ID: 3D214F8F5BC5ED73
6 changed files with 41 additions and 353 deletions

View File

@ -1,39 +1,31 @@
[![ScreenShot](http://i.imgur.com/lJw1Tui.jpg)]
# Welcome to ethereumj
[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/ethereum/ethereumj?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/ethereum/ethereumj.svg?branch=master)](https://travis-ci.org/ethereum/ethereumj) [![Coverage Status](https://coveralls.io/repos/ethereum/ethereumj/badge.png?branch=master)](https://coveralls.io/r/ethereum/ethereumj?branch=master)
[![Build Status](https://travis-ci.org/ethereum/ethereumj.svg?branch=master)](https://travis-ci.org/ethereum/ethereumj)
[![Coverage Status](https://coveralls.io/repos/ethereum/ethereumj/badge.png?branch=master)](https://coveralls.io/r/ethereum/ethereumj?branch=master)
[![Stories in Progress](https://badge.waffle.io/ethereum/ethereumj.png?title=In%20Progress&label=in_progress)](https://waffle.io/ethereum/ethereumj)
# Goals
[![Now hiring](http://i.imgur.com/lJw1Tui.jpg)]
The ethereumj library is a Java implementation of the Ethereum protocol.
# About
ethereumj is a pure-Java implementation of the Ethereum protocol. For high-level information about Ethereum and its goals, visit [ethereum.org](https://ethereum.org). The [ethereum white paper](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-White-Paper) provides a complete conceptual overview, and the [yellow paper](http://gavwood.com/Paper.pdf) provides a formal definition of the protocol.
This repository currently contains:
* [core](ethereumj-core): the core library which can be included into your own Java project.
* [studio](ethereumj-studio): a simple graphic interface for Ethereum functionality and set of showcases for core usage.
This repository consists of:
* [ethereum-core](ethereumj-core): a library suitable for inclusion in any JVM-based project.
* [ethereum-studio](ethereumj-studio): a simple GUI for exploring Ethereum functionality and usage of the ethereumj API.
For an early peek, have a looki at this [video](https://youtu.be/D5ok7jh7AOg)
To see ethereum-studio in action, watch this [video](https://youtu.be/D5ok7jh7AOg).
# Todo
The Ethereum protocol is under heavy development, thus so is this implementation. See the [todo list](TODO.md), GitHub [Issues](https://github.com/ethereum/ethereumj/issues) and [milestone schedule](https://github.com/ethereum/ethereumj/milestones). Issues are prioritized using [waffle](http://waffle.io/ethereum/ethereumj).
The Ethereum protocol is currenty heavily in development, thus so is this implementation.
You can find a todo-list right [here](TODO.md) and the [milestone schedule](https://github.com/ethereum/ethereumj/milestones).
For questions you can reach us in #ethereumj on Freenode.
# Contact
Chat with us via [Gitter](https://gitter.im/ethereum/ethereumj) or [#ethereumj](webchat.freenode.net/?channels=ethereumj) on Freenode.
# Documentation
# Building from source
Clone this repository and run `./gradlew build`. Import all sources into IntelliJ IDEA (14+) with `File->Import project` and point to the top-level `build.gradle` file.
To start you can visit [Ethereum.org](https://www.ethereum.org) and if you are looking for more information on the concept, the [ethereum white paper](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-White-Paper) is a good place to start as it outlines the vision. For the more technical minded, a protocol description can be found in the [yellow paper](http://gavwood.com/Paper.pdf) by Gavin Wood.
# Maven
The main ethereumj library can be found in the Maven repository
https://bintray.com/ethereum/maven/org.ethereum/view
For building ethereumj-core or ethereumj-studio look in their own individual README
# Usage
For complete details on downloading, building and using [etherumj-core](ethereumj-core) and [ethereumj-studio](ethereumj-studio), see their respective readme files.
# License
This software is released under the MIT license, read it [here](LICENSE)
ethereumj is released under the [MIT license](LICENSE).

14
build.gradle Normal file
View File

@ -0,0 +1,14 @@
wrapper.gradleVersion = '2.2.1'
subprojects {
apply plugin: 'java'
sourceCompatibility = 1.7
group = 'org.ethereum'
version = '0.7.15-SNAPSHOT'
repositories {
jcenter()
}
}

View File

@ -8,13 +8,6 @@ plugins {
id 'com.github.kt3k.coveralls' version '2.0.1x'
}
wrapper.gradleVersion = '2.2.1'
sourceCompatibility = 1.7
group = 'org.ethereum'
version = '0.7.15-SNAPSHOT'
mainClassName = 'org.ethereum.Start'
ext.generatedSrcDir = file('src/gen/java')
@ -42,10 +35,6 @@ ext {
junitVersion = '4.11'
}
repositories {
jcenter()
}
dependencies {
compile "io.netty:netty-all:4.0.23.Final"
compile "com.madgag.spongycastle:core:${scastleVersion}" // for SHA3 and SECP256K1

View File

@ -0,0 +1,6 @@
dependencies {
compile project(':ethereumj-core')
compile "com.maxmind.geoip:geoip-api:1.2.11"
compile "com.maxmind.geoip2:geoip2:0.6.0"
compile "com.fifesoft:rsyntaxtextarea:2.5.0"
}

View File

@ -1,317 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.ethereum</groupId>
<artifactId>ethereumj-studio</artifactId>
<packaging>jar</packaging>
<version>0.7.8</version>
<name>EthereumJ Studio</name>
<url>http://www.ethereumj.org</url>
<!--
* To deploy the classes in one jar and dependencies to another dir
mvn clean package -Dmaven.test.skip=true
* To generate source for ANTLR parser/lexer
mvn antlr4:antlr4
* Install jar with sources to the maven repository
mvn source:jar install -Dmaven.test.skip=true
-->
<developers>
<developer>
<name>Roman Mandeleil</name>
</developer>
<developer>
<name>Nick Savers</name>
</developer>
</developers>
<distributionManagement>
<repository>
<id>internal.repo</id>
<name>Temporary Staging Repository</name>
<url>file://${project.build.directory}/mvn-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>central</id>
<name>bintray</name>
<url>http://dl.bintray.com/ethereum/maven/</url>
</repository>
<repository>
<id>mvn-central</id>
<name>maven</name>
<url>http://repo1.maven.org/maven2</url>
</repository>
</repositories>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Third-party dependencies -->
<junit.version>4.11</junit.version>
<slf4j.version>1.7.7</slf4j.version>
<leveldb.version>0.7</leveldb.version>
<spongycastle.version>1.51.0.0</spongycastle.version>
<generated.sourceDirectory>gen</generated.sourceDirectory>
</properties>
<dependencies>
<dependency>
<groupId>org.ethereum</groupId>
<artifactId>ethereumj</artifactId>
<version>0.7.9.20141123.2140</version>
</dependency>
<dependency>
<groupId>com.maxmind.geoip</groupId>
<artifactId>geoip-api</artifactId>
<version>1.2.11</version>
</dependency>
<dependency>
<groupId>com.maxmind.geoip2</groupId>
<artifactId>geoip2</artifactId>
<version>0.6.0</version>
</dependency>
<dependency>
<groupId>com.fifesoft</groupId>
<artifactId>rsyntaxtextarea</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
<build>
<!--<resources>-->
<!--<resource>-->
<!--<directory>src/main/antlr4</directory>-->
<!--</resource>-->
<!--</resources>-->
<plugins>
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>1.5.3</version>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<file>target/classes/system.properties</file>
<replacements>
<replacement>
<token>PROJECT.VERSION</token>
<value>${project.version}</value>
</replacement>
</replacements>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/dependency</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>org.ethereum.gui.ToolBar</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.eluder.coveralls</groupId>
<artifactId>coveralls-maven-plugin</artifactId>
<version>2.2.0</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.1.201405082137</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
<configuration>
<excludes>
<exclude>org/ethereum/gui/**/*.class</exclude>
<exclude>org/ethereum/**/*Test.class</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<phase>package</phase>
<configuration>
<tasks>
<property name="maven.project.artifactId" value="${project.artifactId}"/>
<property name="maven.project.version" value="${project.version}"/>
<ant antfile="build-post-package.xml" target="run"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>4.3</version>
<configuration>
<listener>true</listener>
<visitor>true</visitor>
</configuration>
<executions>
<execution>
<id>antlr</id>
<goals>
<goal>antlr4</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.1</version>
<configuration>
<altDeploymentRepository>internal.repo::default::file://${project.build.directory}/mvn-repo</altDeploymentRepository>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<versionRange>[2.0,)</versionRange>
<goals>
<goal>copy-dependencies</goal>
<goal>unpack</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<versionRange>[0.7.1.201405082137,)</versionRange>
<goals>
<goal>prepare-agent</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>

4
settings.gradle Normal file
View File

@ -0,0 +1,4 @@
rootProject.name = "ethereumj"
include "ethereumj-core"
include "ethereumj-studio"