|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp забыл ник пропущено... Ты хотел сказать, что ты не знаешь как заменить. Тогда предложение становится истинным Нажми еще раз кнопку Run, может на этот раз получится правильный ответ ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 16:26 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
Спасибо всем участникам! Не все, к сожалению, поняли суть просьбы, но некоторые поняли, им особое спасибо. "Библиотека" - это, пожалуй, слишком громкое слово, привычная ассоциация c пакетом (mvn install), наверное, сбивает с толку. "Общие исходные файлы для разных проектов" - вот как точнее назвать то, что я хочу получить. Пакеты, библиотеки, репозитории - это мощная концепция, но она предполагает некую завершенность. Библиотека - это нечто отлаженное, собранное, однозначно идентифицируемое и лежащее в строго определенном месте. Пользуйся на здоровье, но руками не не трогай! Часто же в разработке удобно иметь просто общие файлы, именно чтобы их трогать руками из разных мест. Открыл один проект, поправил, собрал. Открыт другой проект, посмотрел, что получилось, поправил, собрал. Открыл первый проект, пересобрал, если нужно. Вот уважаемый Zzz79 вроде бы знает как это сделать: Zzz79 вынести те классы,которые ты хочешь в отдельную либу и потом добавить этот модуль в артифакты проекта 1,проекта 2 и любого другого вынести в отдельную либу - это значит собрать все это добро в джарник при этом ты сможешь рефакторить файлы и текущего проекта и подключенного,надо только прокинуть ауты при этом у тебя будет сразу несколько корневых папок в проекте и ты без проблем сможешь их изменять и эти изменения будут подхватыватья в реальном времени ну тоесть это вполне реально ,так как я работал на таком проекте - где у нас было по 5 -10 модулей подключенных и все редактировалось без проблем Дорогой Zzz79, а можно поподробнее, как это хозяйство настроить, где "прокинуть ауты", что и где прописать, чтобы изменения подхватывались в реальном времени? Нельзя ли глянуть на структуру аналогичного проекта? Я попробовал, но получилось хреновенько. Сделал 2 проекта, каждый из 2-х модулей, один модуль общий для обоих проектов. Модули в смысле IDEA ("Project structure..."), а не maven, maven модули не позволили мне указать на "внешние" пути относительно проекта. Компилятор и среда пути к файлам модуля видят (после ручной настройки), в принципе можно и править, и собирать. Но настройки "библиотечного" модуля постоянно слетают при закрытии/открытии проекта, при каких-то еще событиях. Так жить нельзя. Вот здесь отцы-создатели maven предлагают решение схожей проблемы, но там структура не совсем такая, как я хочу. Возможно, придется делать так. Буду благодарен за образцы. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 16:28 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
shalamyansky, В java это называется jar файл. Ни одного не подключал к проекту? Подходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 16:37 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
забыл ник, В ПТ. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 16:38 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp В java это называется jar файл. Ни одного не подключал к проекту? Подходит? Jar файл, в моем нынешнем понимании, - это архив с откомпилированными бинарными файлами *.class, то есть собственно пакет (библиотека). В проекте, ясен пень, таких до сотни и больше, сторонних производителей. Могу и свой сделать. Но библиотеки jar с бинарными файлами как раз и создают проблему - не ясно, мне не ясно, как одновременно, в течение одной сборки проекта, компилировать и собственные файлы проекта, и исходные файлы библиотеки. Или существуют мне пока неведомые управляемые jar-файлы с исходниками? Научите, тогда, пожалуйста, как с ними обходиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 16:58 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
shalamyansky, Давай по шагам. Jar файл это dll в дельфи. Ты оттуда? Так и тут. Как в дельфи. В IDE открыто два проекта и один проект это jar файл либа utils.jar. Дальше что непонятно? Или ты в notepad.exe пишешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 17:06 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
shalamyansky Jar файл, в моем нынешнем понимании, - это архив с откомпилированными бинарными файлами *.class, то есть собственно пакет (библиотека). В проекте, ясен пень, таких до сотни и больше, сторонних производителей. Могу и свой сделать. Но библиотеки jar с бинарными файлами как раз и создают проблему - не ясно, мне не ясно, как одновременно, в течение одной сборки проекта, компилировать и собственные файлы проекта, и исходные файлы библиотеки. Или существуют мне пока неведомые управляемые jar-файлы с исходниками? Научите, тогда, пожалуйста, как с ними обходиться. Есть два подхода. 1) Можно собрать толстый jar-файл куда включить все classfiles из исходников и из библиотек. maven-shade-plugin этим занимается. На выходе мы получаем автономное приложение у которого все зависимости есть. 2) И второй способ - добавить в MANIFEST.MF в CLASSPATH относительные пути на все твои зависимости и публиковать их при билде. Как публиковать - тоже отдельная тема. Тут можешь хоть свои bash скрипты делать. Хоть искать коробочные решения. Этот способ хорош гибкостью. Можно легко обновить какие-то зависимости или подкинуть там 2-3 новых JDBC-драйвера. Оба способа хороши. И я использую оба. По ситуации. Есть еще и учебно-отладочный вариант когда jar вообще не собирается. Это тоже работает. В коротких тестах и учебниках по программированию на java. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 17:14 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
mayton, Не понял твои варианты. Есть App1, App2, Utils.jar (utils class) Понятно что заказчику нужно jar тоже поставлять. Как dll. Какие варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 17:21 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp В IDE открыто два проекта и один проект это jar файл либа utils.jar. Можно и так. Смотрим дальше. Итак, открыто два проекта, первый - обертка, второй - библиотека. Из основного проекта идет вызов к библиотечному классу. Появилась нужда перейти к вызываемому методу и что-то в нем поправить. Просто нажать мышкой не получится, придется переключить окно на второй проект, там найти файл и метод. Дальше собрать библиотечный проект, переключиться обратно на основной, собрать основной. И все это вместо одного нажатия горячей клавиши. Как-то не айс. Но можно, спору нет. Если вам нравится аналогия с Delphi, то в этой аналогии нет нужды собирать отдельную dll, а нужно воткнуть все необходимое в exe, за одну, естественно, сборку. Когда понадобится dll, будем делать dll, но не ранее того. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 17:28 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Не понял твои варианты. Есть App1, App2, Utils.jar (utils class) Понятно что заказчику нужно jar тоже поставлять. Как dll. Какие варианты? Не знаю. Мой комментарий относится к тому что квотировано. Я про заказчика там ничего не говорю. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 17:32 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
mayton, ОК. Вариант1 - толстое приложение с utils.jar внутри мне лично не нра. Ждем автора. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 17:48 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
mayton maven-shade-plugin Ага, спасибо, смотрю, наверное, это поможет. Но там много наворотов, надо разбираться. Елки-палки, что ж такие сложности для простой задачи - добавить пути поиска исходных файлов? При том что сам компилятор javac такую возможность предусматривает в sourcepath, а надстройки - maven, IDEA и иже с ними, рубят на подлете, и приходится так извращаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 17:50 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
Я иногда собираю для себя консольные утилитки. Состоящие из 1 bash скрипта и 1 jar файла. И в этом случае такой "толстяк" удобен. Эти утилитки не имеют никакого смысла для форума sql.ru Они - специфичны для моих проектов и для моих задач. И никто не поймет что они делают. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 17:52 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Вариант1 - толстое приложение с utils.jar внутри мне лично не нра. Не понял. А разве любое приложение не собирается в единый jar, который содержит все-все нужные классы, кроме разве что тех, которые входят в поставку целевой JRE? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 17:58 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
Спасибо, Zzz79! Zzz79 добавляешь его и далее ты увидишь в структуре своего проекта два корневых каталога-основной проект и редактируемая библиотека Я так сделал руками ("Project structure..."), но получилось плохо, написал выше. Попробую сейчас через gradle, как вы рекомендуете. Еще одна оболочка-плагин, чем дальше в лес, тем толще партизаны... Zzz79 скажу только одно раз у тебя возникла такая проблема - ты что то делаешь не так- так как этот подход жутчайшее легаси и никто так давно уже не работает Я уж догадываюсь. Но не возьму никак в толк, что тут такого неправильного? А если "правильно", то получается неудобно. Это тоже неправильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 18:12 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
shalamyansky PetroNotC Sharp mayton, Вариант1 - толстое приложение с utils.jar внутри мне лично не нра. Не понял. А разве любое приложение не собирается в единый jar, который содержит все-все нужные классы, кроме разве что тех, которые входят в поставку целевой JRE? Поскольку процесс сборки определяется IDE/сборщиком то мы можем только предполагать что там. Вот как вы включаете JDBC-драйверы в ваш проект? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 18:13 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
shalamyansky PetroNotC Sharp mayton, Вариант1 - толстое приложение с utils.jar внутри мне лично не нра. Не понял. А разве любое приложение не собирается в единый jar, который содержит все-все нужные классы, кроме разве что тех, которые входят в поставку целевой JRE? Это файл *.war))) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 18:22 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
shalamyansky, авторЯ уж догадываюсь. Но не возьму никак в толк, что тут такого неправильного? А если "правильно", то получается неудобно. Это тоже неправильно. нет в java одного решения ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 18:26 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
Есть еще морально устаревшая технология OSGI. Которая тоже является стандартом на публикацию java-бинарников. И некоторые крупно-конторы все еще ее поддерживают. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 18:29 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
mayton Вот как вы включаете JDBC-драйверы в ваш проект? Прописываю зависимость в pom.xml. Иначе пока и не умею. Насколько я вижу, в целевом jar в /BOOT-INF/lib после сборки находятся все необходимые библиотеки, в том числе и JDBC-драйвер. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 18:30 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
shalamyansky mayton Вот как вы включаете JDBC-драйверы в ваш проект? Прописываю зависимость в pom.xml. Иначе пока и не умею. Насколько я вижу, в целевом jar в /BOOT-INF/lib после сборки находятся все необходимые библиотеки, в том числе и JDBC-драйвер. В IDE без мавен стоит галка, включать ли дрова к бд в выходной файл war ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 18:38 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
shalamyansky mayton Вот как вы включаете JDBC-драйверы в ваш проект? Прописываю зависимость в pom.xml. Иначе пока и не умею. Насколько я вижу, в целевом jar в /BOOT-INF/lib после сборки находятся все необходимые библиотеки, в том числе и JDBC-драйвер. Их можно включать с разным scope. Код: java 1.
В случае с compiled они - физически включаются в бинарник. Связывание в фазе компилляции. Во втором варианте рантайм или тот сервер приложений. Или среда обещает (!) что нужный jdbc драйвер будет предоставлен в путях CLASSPATH. Эти оба способа вобщем правильные. Но второй считается более гибким т.к. JDBC драйвер следует "инверсии управления" и если ты правильно писал код то ты опирался только на неймспейс java.sql.* и не включал явно никаких конкретных драйверов. Это позволяет в будущем менять целевую DBMS или просто делать апгрейд драйвера если там какая-то ошибка была в старой версии. Какие выводы можно из этого всего сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 18:39 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
Zzz79, так gradle - это получается альтернатива maven. Может, это и хорошая альтернатива, но мне она не подходит, не некоторым причинам я должен остаться на maven. Но за совет спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 18:45 |
|
Как пройти в библиотеку?
|
|||
---|---|---|---|
#18+
mayton Код: java 1.
О как, классно! Про выводы не знаю, но информация крайне для меня ценная. По умолчанию, получается, работает compile . ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 18:51 |
|
|
start [/forum/topic.php?fid=59&msg=39988284&tid=2120719]: |
0ms |
get settings: |
29ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
82ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
488ms |
get tp. blocked users: |
2ms |
others: | 307ms |
total: | 948ms |
0 / 0 |