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

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

16.07.2020, 10:34. Показов 3312. Ответов 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
2843 / 1352 / 403
Регистрация: 11.08.2017
Сообщений: 4,320
Записей в блоге: 2
16.07.2020, 10:57
alex_7, Спрашивается зачем делить маленький проект на отдельные библиотеки? Для начала научиться делить проект на пакеты и модули, что будет куда полезнее. Да и смысл создавать свою библиотеку? Без выгрузки в инет никто кроме тебя воспользоваться никто не сможет. И возникнут проблемы если надо будет менять библиотеку, надо будет пересобирать менять файлы зависимости и тд.
1
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
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
2843 / 1352 / 403
Регистрация: 11.08.2017
Сообщений: 4,320
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru