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/
|
/.gradle/
|
||||||
/.idea/
|
/.idea/
|
||||||
/.nb-gradle/
|
/.nb-gradle/
|
||||||
/build/
|
**/build/
|
||||||
/dist/
|
/dist/
|
||||||
/out/
|
/out/
|
||||||
/store/
|
/store/
|
||||||
/optimizations/
|
/optimizations/
|
||||||
/nbproject/private/
|
|
||||||
/src/main/generatedJava/
|
|
||||||
OwnLang.iml
|
OwnLang.iml
|
||||||
.nb-gradle-properties
|
|
||||||
|
74
build.gradle
74
build.gradle
@ -1,70 +1,12 @@
|
|||||||
plugins {
|
allprojects {
|
||||||
id 'java'
|
repositories {
|
||||||
}
|
|
||||||
|
|
||||||
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()
|
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")
|
gradle.projectsEvaluated {
|
||||||
genFile.getParentFile().mkdirs()
|
tasks.withType(JavaCompile) {
|
||||||
genFile.write(source)
|
[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'
|
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