mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Add multi-project structure
This commit is contained in:
parent
aa62b71520
commit
3aedda0e93
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,12 +1,9 @@
|
||||
/.gradle/
|
||||
/.idea/
|
||||
/.nb-gradle/
|
||||
/build/
|
||||
**/build/
|
||||
/dist/
|
||||
/out/
|
||||
/store/
|
||||
/optimizations/
|
||||
/nbproject/private/
|
||||
/src/main/generatedJava/
|
||||
OwnLang.iml
|
||||
.nb-gradle-properties
|
||||
|
76
build.gradle
76
build.gradle
@ -1,70 +1,12 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
}
|
||||
allprojects {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
group = 'com.annimon'
|
||||
version = '2.0-SNAPSHOT'
|
||||
|
||||
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
|
||||
if (!hasProperty('mainClass')) {
|
||||
ext.mainClass = 'com.annimon.ownlang.Main'
|
||||
}
|
||||
|
||||
ext.generatedJavaDir = "${rootProject.projectDir}/src/main/generatedJava"
|
||||
sourceSets.main.java.srcDirs += project.generatedJavaDir
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
tasks.register('generateJavaSources') {
|
||||
doLast {
|
||||
def source = """
|
||||
package com.annimon.ownlang;
|
||||
class Gen {
|
||||
private Gen() {}
|
||||
public static final String BUILD_DATE = "${new Date().format('YYMMdd')}";
|
||||
}
|
||||
""".stripIndent()
|
||||
def genFile = new File("${project.generatedJavaDir}/com/annimon/ownlang/Gen.java")
|
||||
genFile.getParentFile().mkdirs()
|
||||
genFile.write(source)
|
||||
gradle.projectsEvaluated {
|
||||
tasks.withType(JavaCompile) {
|
||||
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
|
||||
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
|
||||
}
|
||||
}
|
||||
}
|
||||
compileJava.dependsOn(generateJavaSources)
|
||||
|
||||
tasks.register('run', JavaExec) {
|
||||
dependsOn classes
|
||||
mainClass = project.mainClass
|
||||
classpath = sourceSets.main.runtimeClasspath
|
||||
standardInput = System.in
|
||||
ignoreExitValue true
|
||||
}
|
||||
|
||||
tasks.register('runOptimizing', JavaExec) {
|
||||
dependsOn classes
|
||||
mainClass = project.mainClass
|
||||
classpath = sourceSets.main.runtimeClasspath
|
||||
ignoreExitValue true
|
||||
args '-o 9 -m -a -f program.own'.split(' ')
|
||||
}
|
||||
|
||||
|
||||
dependencies {
|
||||
implementation ('io.socket:socket.io-client:1.0.2') {
|
||||
exclude group: 'org.json', module: 'json'
|
||||
}
|
||||
implementation 'org.json:json:20230227'
|
||||
implementation 'org.yaml:snakeyaml:1.20'
|
||||
implementation 'jline:jline:2.14.5'
|
||||
|
||||
testImplementation platform('org.junit:junit-bom:5.9.2')
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.9.2'
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
testImplementation 'org.openjdk.jmh:jmh-core:1.37'
|
||||
testImplementation 'org.openjdk.jmh:jmh-generator-annprocess:1.37'
|
||||
}
|
||||
|
||||
test {
|
||||
useJUnitPlatform()
|
||||
}
|
25
modules/main/build.gradle
Normal file
25
modules/main/build.gradle
Normal file
@ -0,0 +1,25 @@
|
||||
plugins {
|
||||
id 'java-library'
|
||||
}
|
||||
|
||||
group = 'com.annimon.module'
|
||||
version = '2.0-SNAPSHOT'
|
||||
|
||||
|
||||
dependencies {
|
||||
api project(":ownlang-core")
|
||||
|
||||
implementation 'com.squareup.okhttp3:okhttp:3.8.1'
|
||||
implementation ('io.socket:socket.io-client:1.0.2') {
|
||||
exclude group: 'org.json', module: 'json'
|
||||
}
|
||||
implementation 'org.json:json:20230227'
|
||||
implementation 'org.yaml:snakeyaml:1.20'
|
||||
|
||||
testImplementation platform('org.junit:junit-bom:5.9.2')
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
}
|
||||
|
||||
test {
|
||||
useJUnitPlatform()
|
||||
}
|
36
ownlang-core/build.gradle
Normal file
36
ownlang-core/build.gradle
Normal file
@ -0,0 +1,36 @@
|
||||
plugins {
|
||||
id 'java-library'
|
||||
}
|
||||
|
||||
group = 'com.annimon'
|
||||
version = '2.0-SNAPSHOT'
|
||||
|
||||
dependencies {
|
||||
implementation 'org.json:json:20230227'
|
||||
|
||||
testImplementation platform('org.junit:junit-bom:5.9.2')
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
}
|
||||
|
||||
test {
|
||||
useJUnitPlatform()
|
||||
}
|
||||
|
||||
ext.generatedJavaDir = "${project.buildDir}/gen/src/main/java"
|
||||
sourceSets.main.java.srcDirs += project.generatedJavaDir
|
||||
|
||||
tasks.register('generateJavaSources') {
|
||||
doLast {
|
||||
def source = """
|
||||
package com.annimon.ownlang;
|
||||
class Gen {
|
||||
private Gen() {}
|
||||
public static final String BUILD_DATE = "${new Date().format('YYMMdd')}";
|
||||
}
|
||||
""".stripIndent()
|
||||
def genFile = new File("${project.generatedJavaDir}/com/annimon/ownlang/Gen.java")
|
||||
genFile.getParentFile().mkdirs()
|
||||
genFile.write(source)
|
||||
}
|
||||
}
|
||||
compileJava.dependsOn(generateJavaSources)
|
41
ownlang-desktop/build.gradle
Normal file
41
ownlang-desktop/build.gradle
Normal file
@ -0,0 +1,41 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
id 'application'
|
||||
}
|
||||
|
||||
group = 'com.annimon'
|
||||
version = '2.0-SNAPSHOT'
|
||||
|
||||
application {
|
||||
mainClass ='com.annimon.ownlang.Main'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(":ownlang-core")
|
||||
implementation project(":ownlang-parser")
|
||||
implementation project(":ownlang-utils")
|
||||
implementation project(":modules:main")
|
||||
|
||||
testImplementation platform('org.junit:junit-bom:5.9.2')
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
}
|
||||
|
||||
test {
|
||||
useJUnitPlatform()
|
||||
}
|
||||
|
||||
/*tasks.register('run', JavaExec) {
|
||||
dependsOn classes
|
||||
mainClass = project.mainClass
|
||||
classpath = sourceSets.main.runtimeClasspath
|
||||
standardInput = System.in
|
||||
ignoreExitValue true
|
||||
}
|
||||
|
||||
tasks.register('runOptimizing', JavaExec) {
|
||||
dependsOn classes
|
||||
mainClass = project.mainClass
|
||||
classpath = sourceSets.main.runtimeClasspath
|
||||
ignoreExitValue true
|
||||
args '-o 9 -m -a -f program.own'.split(' ')
|
||||
}*/
|
20
ownlang-parser/build.gradle
Normal file
20
ownlang-parser/build.gradle
Normal file
@ -0,0 +1,20 @@
|
||||
plugins {
|
||||
id 'java-library'
|
||||
}
|
||||
|
||||
group = 'com.annimon'
|
||||
version = '2.0-SNAPSHOT'
|
||||
|
||||
dependencies {
|
||||
api project(":ownlang-core")
|
||||
|
||||
testImplementation platform('org.junit:junit-bom:5.9.2')
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.9.2'
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
testImplementation 'org.openjdk.jmh:jmh-core:1.37'
|
||||
testImplementation 'org.openjdk.jmh:jmh-generator-annprocess:1.37'
|
||||
}
|
||||
|
||||
test {
|
||||
useJUnitPlatform()
|
||||
}
|
20
ownlang-utils/build.gradle
Normal file
20
ownlang-utils/build.gradle
Normal file
@ -0,0 +1,20 @@
|
||||
plugins {
|
||||
id 'java-library'
|
||||
}
|
||||
|
||||
group = 'com.annimon'
|
||||
version = '2.0-SNAPSHOT'
|
||||
|
||||
dependencies {
|
||||
api project(":ownlang-parser")
|
||||
implementation 'org.json:json:20230227'
|
||||
implementation 'org.yaml:snakeyaml:1.20'
|
||||
implementation 'jline:jline:2.14.5'
|
||||
|
||||
testImplementation platform('org.junit:junit-bom:5.9.2')
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
}
|
||||
|
||||
test {
|
||||
useJUnitPlatform()
|
||||
}
|
@ -1 +1,9 @@
|
||||
rootProject.name = 'OwnLang'
|
||||
|
||||
include 'ownlang-core'
|
||||
include 'ownlang-parser'
|
||||
include 'ownlang-desktop'
|
||||
include 'ownlang-utils'
|
||||
|
||||
include 'modules:main'
|
||||
findProject(':modules:main')?.name = 'main'
|
Loading…
Reference in New Issue
Block a user