дробим проект на субмодули
This commit is contained in:
15
.editorconfig
Normal file
15
.editorconfig
Normal file
@@ -0,0 +1,15 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
insert_final_newline = true
|
||||
|
||||
[gradlew.bat]
|
||||
charset = latin1
|
||||
end_of_line = crlf
|
||||
|
||||
[*.{yml,yaml}]
|
||||
indent_size = 2
|
||||
63
build.gradle
63
build.gradle
@@ -1,44 +1,37 @@
|
||||
plugins {
|
||||
id 'org.springframework.boot' version '2.6.6'
|
||||
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
|
||||
id 'java'
|
||||
//file:noinspection GrUnresolvedAccess
|
||||
buildscript {
|
||||
apply from: 'versions.gradle'
|
||||
|
||||
repositories {
|
||||
maven { url 'https://plugins.gradle.org/m2/' }
|
||||
}
|
||||
dependencies {
|
||||
// https://plugins.gradle.org/plugin/org.springframework.boot
|
||||
classpath "org.springframework.boot:spring-boot-gradle-plugin:${pluginSpringBootVerson}"
|
||||
// https://plugins.gradle.org/plugin/io.spring.dependency-management
|
||||
classpath "io.spring.gradle:dependency-management-plugin:${pluginSpringBomVerson}"
|
||||
}
|
||||
}
|
||||
|
||||
group = 'ru.di9'
|
||||
version = '1.0-SNAPSHOT'
|
||||
subprojects {
|
||||
apply plugin: 'java'
|
||||
|
||||
compileJava {
|
||||
group = 'ru.di9'
|
||||
|
||||
compileJava {
|
||||
targetCompatibility = sourceCompatibility = JavaVersion.VERSION_17
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
annotationProcessor('org.projectlombok:lombok')
|
||||
compileOnly('org.projectlombok:lombok')
|
||||
|
||||
annotationProcessor('org.springframework.boot:spring-boot-configuration-processor')
|
||||
implementation('org.springframework.boot:spring-boot-starter-web')
|
||||
implementation('org.springframework.boot:spring-boot-starter-aop')
|
||||
|
||||
implementation('com.squareup.okhttp3:okhttp:4.9.3')
|
||||
}
|
||||
|
||||
tasks.named('compileJava') {
|
||||
it.dependsOn('moveSpringConfigurationMetadata')
|
||||
}
|
||||
|
||||
tasks.register('moveSpringConfigurationMetadata').configure {
|
||||
it.dependsOn('processResources')
|
||||
doLast {
|
||||
def metafile = file("${sourceSets.main.output.resourcesDir}/META-INF/additional-spring-configuration-metadata.json")
|
||||
if (metafile.exists()) {
|
||||
def metafileTo = file("${sourceSets.main.output.classesDirs.asPath}/META-INF/spring-configuration-metadata.json")
|
||||
metafileTo.parentFile.mkdirs()
|
||||
metafile.renameTo(metafileTo)
|
||||
}
|
||||
|
||||
dependencies {
|
||||
annotationProcessor("org.projectlombok:lombok:${lombokVersion}")
|
||||
compileOnly("org.projectlombok:lombok:${lombokVersion}")
|
||||
}
|
||||
|
||||
configurations.implementation.resolutionStrategy {
|
||||
failOnVersionConflict()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
5
mirror-app/build.gradle
Normal file
5
mirror-app/build.gradle
Normal file
@@ -0,0 +1,5 @@
|
||||
apply plugin: 'java-library'
|
||||
|
||||
dependencies {
|
||||
api("com.squareup.okhttp3:okhttp:${okhttpVersion}")
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package ru.di9.mirror;
|
||||
package ru.di9.mirror.app;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
@@ -1,4 +1,4 @@
|
||||
package ru.di9.mirror.domain;
|
||||
package ru.di9.mirror.app.domain;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package ru.di9.mirror.domain;
|
||||
package ru.di9.mirror.app.domain;
|
||||
|
||||
public record PathRecord(String name, PathType type) {
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package ru.di9.mirror.domain;
|
||||
package ru.di9.mirror.app.domain;
|
||||
|
||||
public enum PathType {
|
||||
FILE, DIRECTORY
|
||||
@@ -1,4 +1,4 @@
|
||||
package ru.di9.mirror.domain;
|
||||
package ru.di9.mirror.app.domain;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
package ru.di9.mirror.services;
|
||||
package ru.di9.mirror.app.service;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.di9.mirror.Utils;
|
||||
import ru.di9.mirror.domain.FileRecord;
|
||||
import ru.di9.mirror.domain.PathRecord;
|
||||
import ru.di9.mirror.domain.PathType;
|
||||
import ru.di9.mirror.domain.WalkerResult;
|
||||
import ru.di9.mirror.app.Utils;
|
||||
import ru.di9.mirror.app.domain.FileRecord;
|
||||
import ru.di9.mirror.app.domain.PathRecord;
|
||||
import ru.di9.mirror.app.domain.PathType;
|
||||
import ru.di9.mirror.app.domain.WalkerResult;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@@ -19,12 +17,11 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Service
|
||||
public class FileStorageService implements StorageService {
|
||||
|
||||
private final Path storagePath;
|
||||
|
||||
public FileStorageService(@Value("${maven.storage}") String storagePath) {
|
||||
public FileStorageService(String storagePath) {
|
||||
this.storagePath = Paths.get(storagePath).resolve("local");
|
||||
}
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
package ru.di9.mirror.services;
|
||||
package ru.di9.mirror.app.service;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.di9.mirror.domain.FileRecord;
|
||||
import ru.di9.mirror.app.domain.FileRecord;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
public class MavenCentralStorageService extends MirrorService {
|
||||
|
||||
private static final String MAVEN_CENTRAL_URL = "https://repo1.maven.org/maven2";
|
||||
@@ -1,6 +1,6 @@
|
||||
package ru.di9.mirror.services;
|
||||
package ru.di9.mirror.app.service;
|
||||
|
||||
import ru.di9.mirror.domain.WalkerResult;
|
||||
import ru.di9.mirror.app.domain.WalkerResult;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.Optional;
|
||||
@@ -1,14 +1,13 @@
|
||||
package ru.di9.mirror.services;
|
||||
package ru.di9.mirror.app.service;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.di9.mirror.domain.FileRecord;
|
||||
import ru.di9.mirror.domain.WalkerResult;
|
||||
import ru.di9.mirror.app.domain.FileRecord;
|
||||
import ru.di9.mirror.app.domain.WalkerResult;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
@SuppressWarnings("ClassCanBeRecord")
|
||||
public class MirroredStorageService implements StorageService {
|
||||
|
||||
private final FileStorageService fileStorageService;
|
||||
@@ -1,7 +1,7 @@
|
||||
package ru.di9.mirror.services;
|
||||
package ru.di9.mirror.app.service;
|
||||
|
||||
import ru.di9.mirror.domain.FileRecord;
|
||||
import ru.di9.mirror.domain.WalkerResult;
|
||||
import ru.di9.mirror.app.domain.FileRecord;
|
||||
import ru.di9.mirror.app.domain.WalkerResult;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.Optional;
|
||||
25
mirror-web/build.gradle
Normal file
25
mirror-web/build.gradle
Normal file
@@ -0,0 +1,25 @@
|
||||
apply plugin: 'org.springframework.boot'
|
||||
apply plugin: 'io.spring.dependency-management'
|
||||
|
||||
dependencies {
|
||||
implementation(project(':mirror-app'))
|
||||
|
||||
annotationProcessor('org.springframework.boot:spring-boot-configuration-processor')
|
||||
implementation('org.springframework.boot:spring-boot-starter-web')
|
||||
}
|
||||
|
||||
tasks.named('compileJava') {
|
||||
it.dependsOn('moveSpringConfigurationMetadata')
|
||||
}
|
||||
|
||||
tasks.register('moveSpringConfigurationMetadata').configure {
|
||||
it.dependsOn('processResources')
|
||||
doLast {
|
||||
def metafile = file("${sourceSets.main.output.resourcesDir}/META-INF/additional-spring-configuration-metadata.json")
|
||||
if (metafile.exists()) {
|
||||
def metafileTo = file("${sourceSets.main.output.classesDirs.asPath}/META-INF/spring-configuration-metadata.json")
|
||||
metafileTo.parentFile.mkdirs()
|
||||
metafile.renameTo(metafileTo)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package ru.di9.mirror;
|
||||
package ru.di9.mirror.web;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
@@ -9,5 +9,4 @@ public class Application {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Application.class, args);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package ru.di9.mirror.web.config;
|
||||
|
||||
import okhttp3.OkHttpClient;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import ru.di9.mirror.app.service.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Configuration
|
||||
public class WebConfig {
|
||||
|
||||
@Bean
|
||||
public StorageService mirroredStorageService(FileStorageService fileStorageService,
|
||||
List<MirrorService> mirrors) {
|
||||
return new MirroredStorageService(fileStorageService, mirrors);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public FileStorageService fileStorageService(@Value("${maven.storage}") String storagePath) {
|
||||
return new FileStorageService(storagePath);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public List<MirrorService> mirrors() {
|
||||
return List.of(
|
||||
new MavenCentralStorageService(new OkHttpClient())
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package ru.di9.mirror.controller;
|
||||
package ru.di9.mirror.web.controller;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.core.io.InputStreamResource;
|
||||
@@ -10,12 +10,12 @@ import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import ru.di9.mirror.Utils;
|
||||
import ru.di9.mirror.domain.FileRecord;
|
||||
import ru.di9.mirror.domain.PathRecord;
|
||||
import ru.di9.mirror.domain.PathType;
|
||||
import ru.di9.mirror.domain.WalkerResult;
|
||||
import ru.di9.mirror.services.StorageService;
|
||||
import ru.di9.mirror.app.Utils;
|
||||
import ru.di9.mirror.app.domain.FileRecord;
|
||||
import ru.di9.mirror.app.domain.PathRecord;
|
||||
import ru.di9.mirror.app.domain.PathType;
|
||||
import ru.di9.mirror.app.domain.WalkerResult;
|
||||
import ru.di9.mirror.app.service.StorageService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
@@ -1,4 +1,4 @@
|
||||
package ru.di9.mirror.controller;
|
||||
package ru.di9.mirror.web.controller;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
@@ -12,8 +12,8 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import ru.di9.mirror.domain.FileRecord;
|
||||
import ru.di9.mirror.services.StorageService;
|
||||
import ru.di9.mirror.app.domain.FileRecord;
|
||||
import ru.di9.mirror.app.service.StorageService;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.IOException;
|
||||
@@ -1 +1,4 @@
|
||||
rootProject.name = 'project-mirror'
|
||||
|
||||
include('mirror-app')
|
||||
include('mirror-web')
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
package ru.di9.mirror.aspect;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Slf4j
|
||||
@Aspect
|
||||
@Component
|
||||
public class LoggerAspect {
|
||||
|
||||
@Around("execution(* ru.di9.mirror.controller.MavenController.*(..))")
|
||||
public Object logAroundMavenController(ProceedingJoinPoint joinPoint) throws Throwable {
|
||||
return logAround(joinPoint);
|
||||
}
|
||||
|
||||
@Around("execution(* ru.di9.mirror.controller.IndexOfMavenController.*(..))")
|
||||
public Object logAroundIndexOfMavenController(ProceedingJoinPoint joinPoint) throws Throwable {
|
||||
return logAround(joinPoint);
|
||||
}
|
||||
|
||||
private Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
|
||||
log.info("[ASPECT] enter {} <- {}", joinPoint.getSignature().toLongString(), joinPoint.getArgs());
|
||||
Object result = joinPoint.proceed();
|
||||
log.info("[ASPECT] exit {} -> [{}]", joinPoint.getSignature().toLongString(), result);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
package ru.di9.mirror.config;
|
||||
|
||||
import okhttp3.OkHttpClient;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class Config {
|
||||
|
||||
@Bean
|
||||
public OkHttpClient okHttpClient() {
|
||||
return new OkHttpClient();
|
||||
}
|
||||
}
|
||||
7
versions.gradle
Normal file
7
versions.gradle
Normal file
@@ -0,0 +1,7 @@
|
||||
ext {
|
||||
lombokVersion = '1.18.20'
|
||||
okhttpVersion = '4.9.3'
|
||||
|
||||
pluginSpringBootVerson = '2.6.6'
|
||||
pluginSpringBomVerson = '1.0.11.RELEASE'
|
||||
}
|
||||
Reference in New Issue
Block a user