Giter Club home page Giter Club logo

java_core_gradle's Introduction

(Практика: "Сборка проектов, Gradle")

Задача: "Многомодульный проект на Gradle"

Описание

Для закрепления лекционного материала попрактикуемся, как создавать проекты.

Стандартный многомодульный проект имеет составляющие по функционалу:

db - модуль работы с базой данных

api - модуль работы с web

service - слой сервисов

Реализация

Для начала создайте одномодульный проек - как это делали на занятии.

После создаем 3 папки в директории проекта: db, api, service.

В каждой из директории создаем build.gradle c содержимым:

plugins {
    id 'java'
}

group 'ru.netology'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {

}

Чтобы подключить новые модули к проекту, добавляем в корне проекта в settings.gradle новые созданные модули:

include 'db'
include 'service'
include 'api'

После создания многомодульного проекта подключим связанные модули между собой.

Для подключения модуля db в модуль service добавим зависимость:

dependencies {
    implementation project(":db")
}

Для подключения модуля service в модуль api добавим зависимость:

dependencies {
    implementation project(":db")
    implementation project(":service")
}

Теперь можно собрать проект, выполнив команду:

gradle build

Для демострации работы модульности в проекте db создадим классы.

public class DbSetting {

    private String name;
    private String password;

    public DbSetting(String name, String password) {
        this.name = name;
        this.password = password;
    }

}
public class MyEntity {

    private UUID id;
    private String name;

    public MyEntity(String name) {
        this.name = name;
    }

    public UUID getId() {
        return id;
    }

    public void setId(UUID id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return new StringBuilder().append("MyEntity{").append("id=").append(id).append(", name='").append(name).append('\'').append('}').toString();
    }
}
public class Db {

    private DbSetting dbSetting;
    private MyEntity myEntity;

    public Db(DbSetting dbSetting) {
        this.dbSetting = dbSetting;
        myEntity = new MyEntity("first");
        myEntity.setId(UUID.randomUUID());
    }

    public DbSetting getDbSetting() {
        return dbSetting;
    }

    public MyEntity getMyEntity() {
        return myEntity;
    }

    public void setMyEntity(MyEntity myEntity) {
        this.myEntity = myEntity;
    }
}

В проекте Service создадим класс:

public class MyService {

    private DbSetting dbSetting = new DbSetting("name", "password");
    private String name = "myService";
    private Db db = new Db(dbSetting);

    public String getName() {
        return name;
    }

    public MyEntity setMyEntity(MyEntity myEntity) {
        myEntity.setId(UUID.randomUUID());
        db.setMyEntity(myEntity);
        return myEntity;
    }

    public MyEntity getMyEntity() {
        return db.getMyEntity();
    }
}

В проекте api создадим класс:

public class Main {

    public static void main(String[] args) {
        MyService myService = new MyService();
        System.out.println(myService.getMyEntity());
        System.out.println(myService.setMyEntity(new MyEntity("second")));
        System.out.println(myService.getMyEntity());
    }
}

После успешной сборки проекта можем выполнить данный код.

В результате выполнения данного задания мы получили модульный проект с разделением по функциональности

java_core_gradle's People

Contributors

maxisss-de avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

virkato-dev

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.