Форум программистов, компьютерный форум, киберфорум
Java: IDE, инструментарий
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1 / 1 / 2
Регистрация: 17.03.2016
Сообщений: 234

Разбить программу на несколько отдельных библиотек

16.07.2020, 10:34. Показов 3382. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Подскажите такую вещь:

Например написали мы небольшой пример на Java. Используем сборщик Maven.
И вот теперь хотим разбить его на несколько частей, типа на несколько библиотек.
Я так понимаю, это должны быть отдельные jar-файлы в итоге.
Чтобы потом мы могли подключать их как обычные зависимости:

XML
1
2
3
4
5
6
        <!-- Типа моя библиотека -->
        <dependency>
            <groupId>zhd.aleksey</groupId>
            <artifactId>my-super-library</artifactId>
            <version>1.2.0</version>
        </dependency>
Вот когда я прописываю в dependency какую-то библиотеку, например JUnit, то Мавен качает её из центрального_мавен_репозитория. А в данном случае, мне наверно надо руками её положить в нужную папку мавена.

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

Надо:
(1) как разбить маленький проект на отдельные библиотеки.
(2) упаковать их в jar-файлы (наверное, точно не знаю).
(3) и потом собрать готовый проект, где библиотеки будут добавлены как зависимости в pom-файл.
Так вообще можно?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.07.2020, 10:34
Ответы с готовыми решениями:

Разбить запись в ячейке на несколько отдельных столбцов
Добрый вечер! Подскажите, как разбить Паспортные данные на столбцы Тип документа, Серия, Номер, Дата выдачи, Где выдачи. Желательно вложить...

Разбить программу на несколько файлов
Препод сказал вывести так чтобы функци была отдельно программа отдельно и файл вызова отдельно!Ничего не получается,может кто знает в чем...

Разбить программу на несколько функций
Как сделать эту программу в виде функций, сейчас она работает правильно. Программа ищет все локальные минимумы(элемент который меньше всех...

5
Модератор
Эксперт Java
 Аватар для alecss131
2862 / 1368 / 409
Регистрация: 11.08.2017
Сообщений: 4,392
Записей в блоге: 2
16.07.2020, 10:57
alex_7, Спрашивается зачем делить маленький проект на отдельные библиотеки? Для начала научиться делить проект на пакеты и модули, что будет куда полезнее. Да и смысл создавать свою библиотеку? Без выгрузки в инет никто кроме тебя воспользоваться никто не сможет. И возникнут проблемы если надо будет менять библиотеку, надо будет пересобирать менять файлы зависимости и тд.
1
 Аватар для Aviz__
2752 / 2059 / 509
Регистрация: 17.02.2014
Сообщений: 9,486
16.07.2020, 11:30
Цитата Сообщение от alex_7 Посмотреть сообщение
в каком направлении искать примеры
Как подключить библиотеку apache poi к проекту
Цитата Сообщение от alex_7 Посмотреть сообщение
что именно гуглить
вариации на такое "включение библиотеки в проект java руками"
1
1 / 1 / 2
Регистрация: 17.03.2016
Сообщений: 234
16.07.2020, 17:50  [ТС]
Цитата Сообщение от alecss131 Посмотреть сообщение
alex_7, Спрашивается зачем делить маленький проект на отдельные библиотеки? Для начала научиться делить проект на пакеты и модули, что будет куда полезнее. Да и смысл создавать свою библиотеку? Без выгрузки в инет никто кроме тебя воспользоваться никто не сможет. И возникнут проблемы если надо будет менять библиотеку, надо будет пересобирать менять файлы зависимости и тд.
"Пакеты" это точно не то.
"Модули" -- не особо понял, что это в данном контексте.
Возможно термин "библиотека" я в данный момент немного не верно употребил.

Суть в том, что у нас есть проект, и он довольно большой. И надо разбить его на части, чтобы ребята из другого проекта смогли подключать их в своём проекте в pom-файле в разделе dependencies вот в таком виде:

XML
1
2
3
4
5
<dependency>
    <groupId>ru.company</groupId>
    <artifactId>phonecall_library</artifactId>
    <version>1.3.4</version>
</dependency>
В нашем случае используется ГитЛаб, и там эти библиотеки (или "модули", не знаю как правильно) будут лежать, и оттуда Мавен их подтянет как dependency.

Я думаю, что сходу распилить большой проект у меня не получится, поэтому и решил тут спросить на форуме, может подскажут какие то ссылки и примеры , как это сделать для маленького своего проекта. Ну типа учебный пример где-то может есть. Если надо выложить куда-то в интернет, ну ОК, выложу в интернет. Вы мне подскажите, где я это могу почитать/посмотреть? Я не знаю с чего начать
0
Модератор
Эксперт Java
 Аватар для alecss131
2862 / 1368 / 409
Регистрация: 11.08.2017
Сообщений: 4,392
Записей в блоге: 2
16.07.2020, 20:18
Под модулями я имел в виду вот это https://habr.com/ru/post/499872/ другие ссылки лень искать)) Я про пакеты и модули говорил в клнтексте первого поста и маленького проекта. Про маленький проект мнения останусь того же, смысла нет делить.
А то что большой проект то надо было сразу об этом писать. Хотя чем тут помочь… имхо это как с делением кода на классы, или проекта на пакеты или модули. Сложно что либо конкретное и полезное советовать. Просто делите проект на обособленные части. Часть должна выполнять похожую группу функций и быть независимой от других частей.
И то как вы хотите подключать не реализуемо, в данном случае мавен будет искать у себя на серверах, надо еще в настройках проекта добавлять репозитории где будут ваши библиотек, с этим не сталкивался, помочь не могу. Еще по хорошему код стоит упаковать с исходниками и документацией, на манер других библиотек (не в один jar, а в несколько с соотвествующими именами и структурой). Думаю не надо говорить про создание jar без зависимостей внутри.
1
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
17.07.2020, 13:09
Лучший ответ Сообщение было отмечено alex_7 как решение

Решение

Чтобы выделить отдельный функционал в либу, достаточно создать новый проект, положить туда нужные классы и указать в pom.xml что этот проект собирается в джар (<packaging>jar</packaging>)

После запустка mvn clean install можно будет без проблем импортировать эту зависимость во все локальные проекты.
Чтобы либа стала доступна другим членам команды, нужно в компании установить artifactory (например), настроить его так, чтобы он проксил мейвен сентрал и всем разработчикам раздать settings.xml, в котором основной репозиторий будет ваш artifactory в локальной сети.
Теперь все обычные либы, будут приходить из сентрал и кешится\прокситься на локальном artifactory компании.

На этом самом artifactory, надо создать репозитории для внутренних библиотек и деплоить их туда по мере надобности (лучше не руками).
Таким образом их смогут подключать все, кто пользуется вашим artifactory

PS artifactory выбран для примера. Там может быть nexus или ещё что угодно
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.07.2020, 13:09
Помогаю со студенческими работами здесь

Программу с классами разбить на несколько файлов
Здравствуйте. Я учусь программировать на с++ и столкнулся с проблемой. Не могу найти как написать мой код класса, отдельными файлами...

Thread разбить программу в несколько потоков
Всем привет! Народ, такая проблема, написала программу, теперь нужно её разбить на несколько потоков. Но вот беда, не умею пользоваться...

Динамический массив, разбить программу на несколько функций
Разбить программу на несколько функций #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;locale.h&gt; int main() { setlocale(LC_CTYPE,...

Разбить одну программу на несколько параллельно работающих
Я не программист, языка С++ не знаю. Написал ТЗ, по которому программисты что-то сваяли, недоваяли и самоустранились. Программа под...

Разбить программу на файлы, содержащюю несколько публичных структур, перечислений и классов
Подскажите, пожалуйста, на примере Visual Studio 2010, как правильно разбить программу на файлы, содержащюю несколько публичных структур,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru