diff --git a/README.MD b/README.MD index 3d7113f..f0e5040 100644 --- a/README.MD +++ b/README.MD @@ -6,4 +6,12 @@ --- -* Java 11 \ No newline at end of file +* Java 11 + +--- + +## Запуск + +```shell +gradle :server:run +``` \ No newline at end of file diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 7de1955..0000000 --- a/build.gradle +++ /dev/null @@ -1,61 +0,0 @@ -/* -Запуск - gradle run - */ - -import ru.dmitriymx.gradle.plugin.LibsPlugin -import ru.dmitriymx.gradle.plugin.LogicPlugin - -plugins { - id 'java' - id 'application' -} - -apply plugin: LibsPlugin -apply plugin: LogicPlugin - -project.group = logic.getProperty1('project.group') -project.version = logic.getProperty1('project.version') -jar.archiveBaseName.set(logic.getProperty1('project.name')) - -compileJava { - sourceCompatibility = targetCompatibility = JavaVersion.VERSION_11 - options.encoding = 'UTF-8' -} - -repositories { - mavenLocal() - mavenCentral() -} - -dependencies { - annotationProcessor libs.lombok - compileOnly libs.lombok - compileOnly libs.annotations - - implementation libs.logger.slf4j - implementation libs.logger.logback - - implementation libs.dagger2.implementation - annotationProcessor libs.dagger2.annotationProcessor - - implementation platform('io.projectreactor:reactor-bom:2020.0.6') - implementation 'io.projectreactor:reactor-core' - - implementation 'io.netty:netty-all:4.1.22.Final' - implementation libs.guava - - testImplementation libs.junit5.api - testImplementation libs.junit5.params - testRuntimeOnly libs.junit5.engine - - testImplementation libs.lang3 -} - -application { - mainClassName = 'mc.server.Main' -} - -test { - useJUnitPlatform() -} diff --git a/buildSrc/src/main/java/ru/dmitriymx/gradle/extention/LibsExtention.java b/buildSrc/src/main/java/ru/dmitriymx/gradle/extention/LibsExtention.java deleted file mode 100644 index 05123ee..0000000 --- a/buildSrc/src/main/java/ru/dmitriymx/gradle/extention/LibsExtention.java +++ /dev/null @@ -1,46 +0,0 @@ -package ru.dmitriymx.gradle.extention; - -import java.util.List; - -public class LibsExtention { - - public final String lombok = "org.projectlombok:lombok:1.18.12"; - public final String annotations = "com.google.code.findbugs:jsr305:3.0.2"; - public final String guava = "com.google.guava:guava:30.1-jre"; - public final String lang3 = "org.apache.commons:commons-lang3:3.11"; - - public final LoggerLibs logger = new LoggerLibs(); - public final Dagger2Libs dagger2 = new Dagger2Libs(); - public final Junit5Libs junit5 = new Junit5Libs(); - - public static final class LoggerLibs { - private final String slf4j_version = "1.7.30"; - private final String logback_version = "1.2.3"; - - public final List slf4j = List.of( - "org.slf4j:slf4j-api:" + slf4j_version, - "org.slf4j:jcl-over-slf4j:" + slf4j_version - ); - - public final List logback = List.of( - "ch.qos.logback:logback-core:" + logback_version, - "ch.qos.logback:logback-classic:" + logback_version - ); - } - - public static final class Dagger2Libs { - private final String dagger2_version = "2.33"; - - public final String implementation = "com.google.dagger:dagger:" + dagger2_version; - public final String annotationProcessor = "com.google.dagger:dagger-compiler:" + dagger2_version; - } - - public static final class Junit5Libs { - private final String junit_version = "5.5.2"; - - public final String api = "org.junit.jupiter:junit-jupiter-api:" + junit_version; - /** runtimeOnly */ - public final String engine = "org.junit.jupiter:junit-jupiter-engine:" + junit_version; - public final String params = "org.junit.jupiter:junit-jupiter-params:" + junit_version; - } -} diff --git a/buildSrc/src/main/java/ru/dmitriymx/gradle/extention/LogicExtention.java b/buildSrc/src/main/java/ru/dmitriymx/gradle/extention/LogicExtention.java deleted file mode 100644 index c596a13..0000000 --- a/buildSrc/src/main/java/ru/dmitriymx/gradle/extention/LogicExtention.java +++ /dev/null @@ -1,19 +0,0 @@ -package ru.dmitriymx.gradle.extention; - -import org.gradle.api.Project; - -public class LogicExtention { - private final Project project; - - public LogicExtention(Project project) { - this.project = project; - } - - public String getProperty1(String propertyName1, String propertyName2) { - return (String) (project.hasProperty(propertyName1) ? project.property(propertyName1) : project.property(propertyName2)); - } - - public String getProperty1(String propertyName) { - return (String) (project.hasProperty(propertyName) ? project.property(propertyName) : null); - } -} diff --git a/buildSrc/src/main/java/ru/dmitriymx/gradle/plugin/LibsPlugin.java b/buildSrc/src/main/java/ru/dmitriymx/gradle/plugin/LibsPlugin.java deleted file mode 100644 index 243fa5d..0000000 --- a/buildSrc/src/main/java/ru/dmitriymx/gradle/plugin/LibsPlugin.java +++ /dev/null @@ -1,13 +0,0 @@ -package ru.dmitriymx.gradle.plugin; - -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import ru.dmitriymx.gradle.extention.LibsExtention; - -public class LibsPlugin implements Plugin { - - @Override - public void apply(Project project) { - project.getExtensions().create("libs", LibsExtention.class); - } -} diff --git a/buildSrc/src/main/java/ru/dmitriymx/gradle/plugin/LogicPlugin.java b/buildSrc/src/main/java/ru/dmitriymx/gradle/plugin/LogicPlugin.java deleted file mode 100644 index 4068cf4..0000000 --- a/buildSrc/src/main/java/ru/dmitriymx/gradle/plugin/LogicPlugin.java +++ /dev/null @@ -1,13 +0,0 @@ -package ru.dmitriymx.gradle.plugin; - -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import ru.dmitriymx.gradle.extention.LogicExtention; - -public class LogicPlugin implements Plugin { - - @Override - public void apply(Project project) { - project.getExtensions().create("logic", LogicExtention.class, project); - } -} diff --git a/libs.gradle b/libs.gradle new file mode 100644 index 0000000..365ee1a --- /dev/null +++ b/libs.gradle @@ -0,0 +1,40 @@ +//file:noinspection GroovyAssignabilityCheck +//file:noinspection GrUnresolvedAccess +//file:noinspection GroovyConstructorNamedArguments + +def slf4j_version = '1.7.30' +def logback_version = '1.2.3' +def dagger2_version = '2.33' +def junit_version = '5.5.2' + +ext { + libs = [ + lombok : 'org.projectlombok:lombok:1.18.12', + annotations: 'com.google.code.findbugs:jsr305:3.0.2', + guava : 'com.google.guava:guava:30.1-jre', + lang3 : 'org.apache.commons:commons-lang3:3.11', + ] + + libs.logger = [ + slf4j : ["org.slf4j:slf4j-api:${slf4j_version}", + "org.slf4j:jcl-over-slf4j:${slf4j_version}"], + logback: ["ch.qos.logback:logback-core:${logback_version}", + "ch.qos.logback:logback-classic:${logback_version}"] + ] + + libs.dagger2 = [ + implementation : "com.google.dagger:dagger:${dagger2_version}", + annotationProcessor: "com.google.dagger:dagger-compiler:${dagger2_version}" + ] + + libs.test = [ + logger: "org.slf4j:slf4j-simple:${slf4j_version}" + ] + + libs.test.junit5 = [ + api : "org.junit.jupiter:junit-jupiter-api:${junit_version}", + //runtime only + engine: "org.junit.jupiter:junit-jupiter-engine:${junit_version}", + params: "org.junit.jupiter:junit-jupiter-params:${junit_version}" + ] +} \ No newline at end of file diff --git a/logic.gradle b/logic.gradle new file mode 100644 index 0000000..eb5630f --- /dev/null +++ b/logic.gradle @@ -0,0 +1,42 @@ +//file:noinspection GrUnresolvedAccess +apply plugin: 'java' +apply from: rootDir.toPath().resolve('libs.gradle').toFile() + +String getProperty1(String propertyName1, String propertyName2) { + return (String) (project.hasProperty(propertyName1) ? project.property(propertyName1) : project.property(propertyName2)) +} + +project.group = getProperty1('module.group', 'project.group') +project.version = getProperty1('module.version', 'project.version') +jar.archiveBaseName.set(getProperty1('module.name', 'project.name')) + +compileJava { + sourceCompatibility = targetCompatibility = JavaVersion.VERSION_11 + options.encoding = 'UTF-8' +} + +repositories { + mavenLocal() + mavenCentral() +} + +dependencies { + annotationProcessor libs.lombok + compileOnly libs.lombok + compileOnly libs.annotations + + implementation libs.logger.slf4j + + implementation libs.dagger2.implementation + annotationProcessor libs.dagger2.annotationProcessor + + testImplementation libs.test.junit5.api + testImplementation libs.test.junit5.params + testRuntimeOnly libs.test.junit5.engine + + testRuntimeOnly libs.test.logger +} + +test { + useJUnitPlatform() +} diff --git a/protocol/build.gradle b/protocol/build.gradle new file mode 100644 index 0000000..4e4b0da --- /dev/null +++ b/protocol/build.gradle @@ -0,0 +1,8 @@ +apply from: rootDir.toPath().resolve('logic.gradle').toFile() + +dependencies { + implementation 'io.netty:netty-all:4.1.22.Final' + implementation libs.guava + + testImplementation libs.lang3 +} diff --git a/protocol/gradle.properties b/protocol/gradle.properties new file mode 100644 index 0000000..572e805 --- /dev/null +++ b/protocol/gradle.properties @@ -0,0 +1,3 @@ +# suppress inspection "UnusedProperty" for whole file +module.name=protocol +module.version=1.0-SNAPSHOT \ No newline at end of file diff --git a/src/main/java/mc/protocol/NetworkAttributes.java b/protocol/src/main/java/mc/protocol/NetworkAttributes.java similarity index 100% rename from src/main/java/mc/protocol/NetworkAttributes.java rename to protocol/src/main/java/mc/protocol/NetworkAttributes.java diff --git a/src/main/java/mc/protocol/State.java b/protocol/src/main/java/mc/protocol/State.java similarity index 100% rename from src/main/java/mc/protocol/State.java rename to protocol/src/main/java/mc/protocol/State.java diff --git a/src/main/java/mc/protocol/io/DecoderException.java b/protocol/src/main/java/mc/protocol/io/DecoderException.java similarity index 100% rename from src/main/java/mc/protocol/io/DecoderException.java rename to protocol/src/main/java/mc/protocol/io/DecoderException.java diff --git a/src/main/java/mc/protocol/io/NetByteBuf.java b/protocol/src/main/java/mc/protocol/io/NetByteBuf.java similarity index 100% rename from src/main/java/mc/protocol/io/NetByteBuf.java rename to protocol/src/main/java/mc/protocol/io/NetByteBuf.java diff --git a/src/main/java/mc/protocol/io/codec/ProtocolDecoder.java b/protocol/src/main/java/mc/protocol/io/codec/ProtocolDecoder.java similarity index 100% rename from src/main/java/mc/protocol/io/codec/ProtocolDecoder.java rename to protocol/src/main/java/mc/protocol/io/codec/ProtocolDecoder.java diff --git a/src/main/java/mc/protocol/io/codec/ProtocolEncoder.java b/protocol/src/main/java/mc/protocol/io/codec/ProtocolEncoder.java similarity index 100% rename from src/main/java/mc/protocol/io/codec/ProtocolEncoder.java rename to protocol/src/main/java/mc/protocol/io/codec/ProtocolEncoder.java diff --git a/src/main/java/mc/protocol/io/codec/ProtocolSplitter.java b/protocol/src/main/java/mc/protocol/io/codec/ProtocolSplitter.java similarity index 100% rename from src/main/java/mc/protocol/io/codec/ProtocolSplitter.java rename to protocol/src/main/java/mc/protocol/io/codec/ProtocolSplitter.java diff --git a/src/main/java/mc/protocol/packets/EmptyPacket.java b/protocol/src/main/java/mc/protocol/packets/EmptyPacket.java similarity index 100% rename from src/main/java/mc/protocol/packets/EmptyPacket.java rename to protocol/src/main/java/mc/protocol/packets/EmptyPacket.java diff --git a/src/main/java/mc/protocol/packets/Packet.java b/protocol/src/main/java/mc/protocol/packets/Packet.java similarity index 100% rename from src/main/java/mc/protocol/packets/Packet.java rename to protocol/src/main/java/mc/protocol/packets/Packet.java diff --git a/src/main/java/mc/protocol/packets/PacketDirection.java b/protocol/src/main/java/mc/protocol/packets/PacketDirection.java similarity index 100% rename from src/main/java/mc/protocol/packets/PacketDirection.java rename to protocol/src/main/java/mc/protocol/packets/PacketDirection.java diff --git a/src/main/java/mc/protocol/packets/UnknownPacket.java b/protocol/src/main/java/mc/protocol/packets/UnknownPacket.java similarity index 100% rename from src/main/java/mc/protocol/packets/UnknownPacket.java rename to protocol/src/main/java/mc/protocol/packets/UnknownPacket.java diff --git a/src/main/java/mc/protocol/packets/client/HandshakePacket.java b/protocol/src/main/java/mc/protocol/packets/client/HandshakePacket.java similarity index 100% rename from src/main/java/mc/protocol/packets/client/HandshakePacket.java rename to protocol/src/main/java/mc/protocol/packets/client/HandshakePacket.java diff --git a/src/main/java/mc/protocol/packets/client/LoginStartPacket.java b/protocol/src/main/java/mc/protocol/packets/client/LoginStartPacket.java similarity index 100% rename from src/main/java/mc/protocol/packets/client/LoginStartPacket.java rename to protocol/src/main/java/mc/protocol/packets/client/LoginStartPacket.java diff --git a/src/main/java/mc/protocol/packets/client/StatusServerRequest.java b/protocol/src/main/java/mc/protocol/packets/client/StatusServerRequest.java similarity index 100% rename from src/main/java/mc/protocol/packets/client/StatusServerRequest.java rename to protocol/src/main/java/mc/protocol/packets/client/StatusServerRequest.java diff --git a/src/main/java/mc/protocol/packets/server/DisconnectPacket.java b/protocol/src/main/java/mc/protocol/packets/server/DisconnectPacket.java similarity index 100% rename from src/main/java/mc/protocol/packets/server/DisconnectPacket.java rename to protocol/src/main/java/mc/protocol/packets/server/DisconnectPacket.java diff --git a/src/main/java/mc/protocol/packets/server/StatusServerResponse.java b/protocol/src/main/java/mc/protocol/packets/server/StatusServerResponse.java similarity index 100% rename from src/main/java/mc/protocol/packets/server/StatusServerResponse.java rename to protocol/src/main/java/mc/protocol/packets/server/StatusServerResponse.java diff --git a/src/test/java/mc/protocol/io/NetByteBufReadTest.java b/protocol/src/test/java/mc/protocol/io/NetByteBufReadTest.java similarity index 99% rename from src/test/java/mc/protocol/io/NetByteBufReadTest.java rename to protocol/src/test/java/mc/protocol/io/NetByteBufReadTest.java index c48b6b4..6337ec5 100644 --- a/src/test/java/mc/protocol/io/NetByteBufReadTest.java +++ b/protocol/src/test/java/mc/protocol/io/NetByteBufReadTest.java @@ -1,6 +1,5 @@ package mc.protocol.io; -import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/src/test/java/mc/protocol/io/NetByteBufWriteTest.java b/protocol/src/test/java/mc/protocol/io/NetByteBufWriteTest.java similarity index 100% rename from src/test/java/mc/protocol/io/NetByteBufWriteTest.java rename to protocol/src/test/java/mc/protocol/io/NetByteBufWriteTest.java diff --git a/server/build.gradle b/server/build.gradle new file mode 100644 index 0000000..68acb11 --- /dev/null +++ b/server/build.gradle @@ -0,0 +1,23 @@ +/* +Запуск + gradle :server:run + */ + +apply from: rootDir.toPath().resolve('logic.gradle').toFile() +apply plugin: 'application' + +application { + mainClassName = 'mc.server.Main' +} + +dependencies { + implementation project(':protocol') + + implementation libs.logger.logback + + implementation platform('io.projectreactor:reactor-bom:2020.0.6') + implementation 'io.projectreactor:reactor-core' + + implementation 'io.netty:netty-all:4.1.22.Final' + implementation libs.guava +} diff --git a/server/gradle.properties b/server/gradle.properties new file mode 100644 index 0000000..e2373fb --- /dev/null +++ b/server/gradle.properties @@ -0,0 +1,3 @@ +# suppress inspection "UnusedProperty" for whole file +module.name=server +module.version=1.0-SNAPSHOT \ No newline at end of file diff --git a/src/main/java/mc/server/Main.java b/server/src/main/java/mc/server/Main.java similarity index 100% rename from src/main/java/mc/server/Main.java rename to server/src/main/java/mc/server/Main.java diff --git a/src/main/java/mc/server/di/NetworkComponent.java b/server/src/main/java/mc/server/di/NetworkComponent.java similarity index 100% rename from src/main/java/mc/server/di/NetworkComponent.java rename to server/src/main/java/mc/server/di/NetworkComponent.java diff --git a/src/main/java/mc/server/di/NetworkModule.java b/server/src/main/java/mc/server/di/NetworkModule.java similarity index 100% rename from src/main/java/mc/server/di/NetworkModule.java rename to server/src/main/java/mc/server/di/NetworkModule.java diff --git a/src/main/java/mc/server/network/Server.java b/server/src/main/java/mc/server/network/Server.java similarity index 100% rename from src/main/java/mc/server/network/Server.java rename to server/src/main/java/mc/server/network/Server.java diff --git a/src/main/java/mc/server/network/netty/NettyServer.java b/server/src/main/java/mc/server/network/netty/NettyServer.java similarity index 100% rename from src/main/java/mc/server/network/netty/NettyServer.java rename to server/src/main/java/mc/server/network/netty/NettyServer.java diff --git a/src/main/java/mc/server/network/netty/handler/AbstractPacketHandler.java b/server/src/main/java/mc/server/network/netty/handler/AbstractPacketHandler.java similarity index 100% rename from src/main/java/mc/server/network/netty/handler/AbstractPacketHandler.java rename to server/src/main/java/mc/server/network/netty/handler/AbstractPacketHandler.java diff --git a/src/main/java/mc/server/network/netty/handler/HandshakeHandler.java b/server/src/main/java/mc/server/network/netty/handler/HandshakeHandler.java similarity index 100% rename from src/main/java/mc/server/network/netty/handler/HandshakeHandler.java rename to server/src/main/java/mc/server/network/netty/handler/HandshakeHandler.java diff --git a/src/main/java/mc/server/network/netty/handler/LoginHandler.java b/server/src/main/java/mc/server/network/netty/handler/LoginHandler.java similarity index 100% rename from src/main/java/mc/server/network/netty/handler/LoginHandler.java rename to server/src/main/java/mc/server/network/netty/handler/LoginHandler.java diff --git a/src/main/java/mc/server/network/netty/handler/StatusHandler.java b/server/src/main/java/mc/server/network/netty/handler/StatusHandler.java similarity index 100% rename from src/main/java/mc/server/network/netty/handler/StatusHandler.java rename to server/src/main/java/mc/server/network/netty/handler/StatusHandler.java diff --git a/src/main/resources/logback.xml b/server/src/main/resources/logback.xml similarity index 100% rename from src/main/resources/logback.xml rename to server/src/main/resources/logback.xml diff --git a/settings.gradle b/settings.gradle index 925cad0..03dd498 100644 --- a/settings.gradle +++ b/settings.gradle @@ -10,4 +10,5 @@ rootProject.projectDir.toPath().resolve('gradle.properties').readLines().forEach rootProject.name = map.get('project.name') +include('protocol') include('server') \ No newline at end of file