Skip to content

Commit b32324e

Browse files
committed
rework structure for better build.gradle
1 parent f04cc61 commit b32324e

35 files changed

+148
-1078
lines changed

.gitmodules

Lines changed: 0 additions & 3 deletions
This file was deleted.

app/build.gradle

Lines changed: 0 additions & 139 deletions
This file was deleted.

app/src/test/java/io/github/rdfc/AppTest.java

Lines changed: 0 additions & 15 deletions
This file was deleted.

build.gradle

Lines changed: 148 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,152 @@
1-
allprojects {
2-
group = 'io.github.rdf-connect'
3-
version = '0.0.3'
1+
plugins {
2+
id 'java'
3+
id 'maven-publish'
4+
id 'com.github.johnrengelman.shadow' version '8.1.1'
5+
}
6+
7+
group = "io.github.rdf-connect"
8+
version = "0.0.3"
9+
10+
repositories {
11+
mavenCentral()
12+
maven { url 'https://jitpack.io' }
13+
}
14+
15+
sourceSets {
16+
runner {
17+
java.srcDir 'src/runner/java'
18+
}
19+
types {
20+
java.srcDir 'src/types/java'
21+
}
22+
}
23+
24+
// --- Dependencies (generated proto needs protobuf runtime) ---
25+
dependencies {
26+
runnerImplementation sourceSets.types.output
27+
runnerImplementation 'com.github.rdf-connect:proto:9700abd'
28+
29+
runnerImplementation 'com.fasterxml.jackson.core:jackson-core:2.18.3'
30+
runnerImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.3'
31+
32+
runnerImplementation 'javax.annotation:javax.annotation-api:1.3.2'
33+
runnerImplementation 'io.grpc:grpc-netty:1.63.0' // or latest version
34+
runnerImplementation 'io.grpc:grpc-protobuf:1.63.0'
35+
runnerImplementation 'io.grpc:grpc-stub:1.63.0'
36+
runnerImplementation 'io.grpc:grpc-core:1.63.0'
37+
38+
runnerImplementation 'com.google.protobuf:protobuf-java:4.28.2'
39+
typesImplementation 'com.google.protobuf:protobuf-java:4.28.2'
40+
41+
// For logging, optional
42+
implementation 'org.slf4j:slf4j-simple:2.0.12'
43+
44+
}
45+
46+
// --- Utility tasks for sources/javadoc jars ---
47+
def sourcesJarFor = { SourceSet set, String taskName, String name ->
48+
tasks.register("${taskName}SourcesJar", Jar) {
49+
archiveBaseName = name
50+
archiveClassifier = "sources"
51+
from set.allSource
52+
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
53+
}
54+
}
55+
56+
def javadocJarFor = { SourceSet set, String taskName, String name ->
57+
def javadocTask = tasks.register("${taskName}Javadoc", Javadoc) {
58+
source = set.allJava
59+
classpath = set.compileClasspath
60+
}
61+
62+
tasks.register("${taskName}JavadocJar", Jar) {
63+
archiveBaseName = name
64+
archiveClassifier = "javadoc"
65+
from javadocTask.map { it.destinationDir }
66+
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
67+
}
68+
}
69+
70+
// Fat jar tasks per source set
71+
tasks.register('runnerFatJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {
72+
archiveClassifier.set('all')
73+
from sourceSets.runner.output
74+
configurations = [project.configurations.runnerRuntimeClasspath]
75+
}
76+
77+
// --- Jar tasks ---
78+
tasks.register("runnerJar", Jar) {
79+
archiveBaseName = "jvm-runner"
80+
from sourceSets.runner.output
81+
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
82+
}
83+
tasks.register("typesJar", Jar) {
84+
archiveBaseName = "types"
85+
from sourceSets.types.output
86+
}
87+
tasks.register("descriptorArtifact", Jar) {
88+
archiveBaseName = "index"
89+
from("index.ttl") { into "" }
90+
}
91+
92+
// --- Sources/javadoc tasks ---
93+
sourcesJarFor(sourceSets.runner, "runner", "jvm-runner")
94+
sourcesJarFor(sourceSets.types, "types", "types")
95+
96+
javadocJarFor(sourceSets.runner, "runner", "jvm-runner")
97+
javadocJarFor(sourceSets.types, "types", "types")
98+
99+
// --- Publishing ---
100+
publishing {
101+
publications {
102+
runner(MavenPublication) {
103+
artifact tasks.runnerJar
104+
artifact tasks.runnerSourcesJar
105+
artifact tasks.runnerJavadocJar
106+
groupId = project.group
107+
artifactId = "jvm-runner"
108+
version = project.version
109+
110+
pom.withXml {
111+
def dependenciesNode = asNode().appendNode('dependencies')
112+
configurations.runnerImplementation.allDependencies.each { dep ->
113+
if (dep.group && dep.name && dep.version) {
114+
def dependencyNode = dependenciesNode.appendNode('dependency')
115+
dependencyNode.appendNode('groupId', dep.group)
116+
dependencyNode.appendNode('artifactId', dep.name)
117+
dependencyNode.appendNode('version', dep.version)
118+
}
119+
}
120+
}
121+
}
122+
types(MavenPublication) {
123+
artifact tasks.typesJar
124+
artifact tasks.typesSourcesJar
125+
artifact tasks.typesJavadocJar
126+
groupId = project.group
127+
artifactId = "types"
128+
version = project.version
129+
}
130+
descriptor(MavenPublication) {
131+
artifact tasks.descriptorArtifact
132+
groupId = project.group
133+
artifactId = "descriptor"
134+
version = project.version
135+
}
136+
}
4137

5138
repositories {
6-
mavenCentral()
139+
maven {
140+
url = uri("$buildDir/repo") // local repo test
141+
}
7142
}
8143
}
144+
145+
build {
146+
dependsOn runnerJar, typesJar
147+
dependsOn runnerFatJar
148+
dependsOn runnerSourcesJar, typesSourcesJar // , runnerJavadocJar
149+
}
150+
configurations.all {
151+
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
152+
}

proto

Lines changed: 0 additions & 1 deletion
This file was deleted.

settings.gradle

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,3 @@
1-
/*
2-
* This file was generated by the Gradle 'init' task.
3-
*
4-
* The settings file is used to specify which projects to include in your build.
5-
* For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.14.3/userguide/multi_project_builds.html in the Gradle documentation.
6-
*/
7-
8-
plugins {
9-
// Apply the foojay-resolver plugin to allow automatic download of JDKs
10-
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.10.0'
11-
}
121

132
rootProject.name = 'jvm-runner'
14-
include('app', 'types')
15-
project(':types').projectDir = file('types/lib')
163

0 commit comments

Comments
 (0)