Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Organize Misq with multi-project Gradle build system #1

Merged
merged 10 commits into from Jun 5, 2021
Merged
17 changes: 17 additions & 0 deletions .gitignore
@@ -1,3 +1,5 @@
# GITHUB JAVA DEFAULTS

# Compiled class file
*.class

Expand All @@ -21,3 +23,18 @@

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

# MISQ

.idea
!.idea/copyright/bisq_Affero_GPLv3.xml
!.idea/copyright/profiles_settings.xml
!.idea/codeStyleSettings.xml
*.iml
*.spvchain
*.wallet
*.ser
.DS_Store
.gradle
build

18 changes: 18 additions & 0 deletions api/build.gradle
@@ -0,0 +1,18 @@
plugins {
id 'java-library'
}

repositories {
mavenCentral()
}

apply from: '../buildSrc/misq-version.gradle'
apply from: '../buildSrc/logging-dependencies.gradle'
apply from: '../buildSrc/test-dependencies.gradle'

dependencies {
}

test {
useJUnitPlatform()
}
39 changes: 39 additions & 0 deletions application/build.gradle
@@ -0,0 +1,39 @@
plugins {
id 'java-library'
id 'application'
id 'distribution'
}

repositories {
mavenCentral()
}

apply from: '../buildSrc/misq-version.gradle'

application {
project.mainClassName = 'network.misq.application.ApplicationMain'
}

distributions {
main {
distributionBaseName = 'app-dist'
}
}

apply from: '../buildSrc/logging-dependencies.gradle'
apply from: '../buildSrc/test-dependencies.gradle'

dependencies {
}

tasks.named('jar') {
manifest {
attributes('Implementation-Title': project.name,
'Implementation-Version': project.version,
'Main-Class': 'network.misq.application.ApplicationMain')
}
}

test {
useJUnitPlatform()
}
@@ -0,0 +1,13 @@
package network.misq.application;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class ApplicationMain {
private static final Logger log = LoggerFactory.getLogger(ApplicationMain.class);

public static void main(String[] args) {
log.info("ApplicationMain");
}
}
13 changes: 13 additions & 0 deletions application/src/main/resources/logback.xml
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>

<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
18 changes: 18 additions & 0 deletions build.gradle
@@ -0,0 +1,18 @@
plugins {
id 'java'
}

group 'network.misq'

repositories {
mavenCentral()
}

apply from: 'buildSrc/misq-version.gradle'

dependencies {
}

test {
useJUnitPlatform()
}
56 changes: 56 additions & 0 deletions buildSrc/build.gradle
@@ -0,0 +1,56 @@
plugins {
id 'com.google.protobuf' version '0.8.16'
id 'signing'
id 'maven-publish'
}

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

apply from: 'misq-version.gradle'

ext {
createTestReports = false
}

configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

java {
modularity.inferModulePath = false
withJavadocJar()
withSourcesJar()
}

tasks.named('compileJava') {
sourceCompatibility = 16
targetCompatibility = 16
modularity.inferModulePath = false
options.compilerArgs += ['-Xdoclint:none', '-Xlint:none', '-nowarn']
}

jar {
// Exclude .proto files from generated jars.
exclude '*.proto'
includeEmptyDirs false
}

tasks.withType(Test).configureEach {
maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
if (!project.hasProperty("createTestReports")) {
reports.html.enabled = false
reports.junitXml.enabled = false
}
}

tasks.named("javadoc") {
source = sourceSets.main.allJava
options.addStringOption('Xdoclint:none', '-quiet')
}

tasks.named("test") {
useJUnitPlatform()
}
18 changes: 18 additions & 0 deletions buildSrc/gen-protos.gradle
@@ -0,0 +1,18 @@
// Shared protobuf generations task.
// Usage: add one line to (sub) project build.gradle file:
// apply from: '../buildSrc/gen-protos.gradle'
ext {
// Default generated src dirs.
generatedGrpcProtoSrcDir = 'build/generated/source/main/grpc'
generatedProtoSrcDir = 'build/generated/source/main/java'
}

sourceSets.main {
java.srcDirs += [generatedProtoSrcDir]
}

protobuf {
protoc { artifact = 'com.google.protobuf:protoc:3.12.4' }
generateProtoTasks { all() }
generatedFilesBaseDir = "$projectDir/build/generated/source"
}
6 changes: 6 additions & 0 deletions buildSrc/logging-dependencies.gradle
@@ -0,0 +1,6 @@
dependencies {
api platform(project(':platforms:common-platform'))
implementation 'org.slf4j:slf4j-api'
implementation 'ch.qos.logback:logback-core'
implementation 'ch.qos.logback:logback-classic'
}
1 change: 1 addition & 0 deletions buildSrc/misq-version.gradle
@@ -0,0 +1 @@
version '0.0.1-SNAPSHOT'
5 changes: 5 additions & 0 deletions buildSrc/test-dependencies.gradle
@@ -0,0 +1,5 @@
dependencies {
api platform(project(':platforms:test-platform'))
testImplementation 'org.junit.jupiter:junit-jupiter-api'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}
25 changes: 25 additions & 0 deletions cli/build.gradle
@@ -0,0 +1,25 @@
plugins {
id 'java-library'
id 'com.google.protobuf' version '0.8.16'
}

repositories {
mavenCentral()
}

apply from: '../buildSrc/misq-version.gradle'
apply from: '../buildSrc/logging-dependencies.gradle'
apply from: '../buildSrc/test-dependencies.gradle'

dependencies {
api platform(project(':platforms:grpc-platform'))

implementation 'com.google.protobuf:protobuf-java'
implementation 'io.grpc:grpc-core'
implementation 'io.grpc:grpc-stub'
implementation 'io.grpc:grpc-netty-shaded'
}

test {
useJUnitPlatform()
}
9 changes: 9 additions & 0 deletions cli/src/main/java/network/misq/cli/CliMain.java
@@ -0,0 +1,9 @@
package network.misq.cli;

import static java.lang.System.out;

public class CliMain {
public static void main(String[] args) {
out.println("CliMain");
}
}
18 changes: 18 additions & 0 deletions common/build.gradle
@@ -0,0 +1,18 @@
plugins {
id 'java-library'
}

repositories {
mavenCentral()
}

apply from: '../buildSrc/misq-version.gradle'
apply from: '../buildSrc/logging-dependencies.gradle'
apply from: '../buildSrc/test-dependencies.gradle'

dependencies {
}

test {
useJUnitPlatform()
}
1 change: 1 addition & 0 deletions gradle.properties
@@ -0,0 +1 @@
org.gradle.parallel=true
6 changes: 6 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=13bf8d3cf8eeeb5770d19741a59bde9bd966dd78d17f1bbad787a05ef19d1c2d
ghubstan marked this conversation as resolved.
Show resolved Hide resolved
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists