powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Maven, скопировать из git репозитория файлы и положить из в resources
20 сообщений из 20, страница 1 из 1
Maven, скопировать из git репозитория файлы и положить из в resources
    #39900960
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно в названии темы весь вопрос и есть :)
Не гуглится никак тема.
Есть какие-то упоминания SCM плагина, но не могу понять оно или нет и если оно, то как его правильно подключить, чтобы задача по перекладыванию файлов из стороннего открытого репозитория в пакет ресурсов jar'ника была выполнена?
Спасибо :)
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39900963
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты ничего не путаешь?

Копирования в git нету. Есть git clone который создает локальную копию. Дальше делай с ней что хочешь.
Возможно ты перепутал инструменты.
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39900964
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ты ничего не путаешь?
Копирования в git нету. Есть git clone который создает локальную копию. Дальше делай с ней что хочешь.
Возможно ты перепутал инструменты.

тааак, то есть в принципе можно клонировать репозиторий в папку рядом с проектом, и затем забрать оттуда файлы и положить в пакет ресурсов собранного проекта? Если не сложно, скиньте поисковый запрос правильный :)
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39900971
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
Тебе надо публичный репо скопировать в локальный репо. Допустим 700 файлов.
А в проект пойдут в 10 раз меньше.
Причина какая?
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39900976
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, всё, сделал :)
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
 <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.4.0</version>
                <executions>
                    <execution>
                        <phase>initialize</phase>
                        <id>clone_and_put_to_resources</id>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <executable>git</executable>
                    <arguments>
                        <argument>clone</argument>
                        <argument>-b</argument>
                        <argument>my_branch_name</argument>
                        <argument>http://scm.some.ru:7999/scm/back/config-repo</argument>
                        <argument>${project.build.outputDirectory}/config/</argument>
                    </arguments>
                </configuration>
            </plugin>



Причина такая, там в репозитории публичном лежат конфиги для сервисов клиентов, всё бы ничего, пусть себе сервисы-клиенты забирают оттуда свои конфиги, но заказчику мы отдаем jar'ник и только, ну может можно рядом папочку какую положить с параметрами и всё. Ставить git и держать у себя на серверах репозитории они не будут.

Поэтому собираем под конкретного заказчика проект с его конфигурационными файлами для сервисов-клиентов.
И при запуске конфиг-сервиса передаем параметр, т.е. профиль, который "переключит" путь к конфигам на путь к ресурсам проекта, а не к публичному репозиторию.

Спасибо, вроде дальше понятно. Очень помог(ли)! :)
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39900977
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Клон делается 1 раз.

После этого можно делать git pull и будут подтягиваться только изменения. Это быстрее.
Кроме того git это система тегов и бранчей. Ты должен понимать что в дефолтном клонировании
ты смотришь на ветку "master" хотя это и не всегда может быть целесообразно.
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39900992
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ты должен понимать что в дефолтном клонировании
ты смотришь на ветку "master" хотя это и не всегда может быть целесообразно.

Да, поэтому я и указал ветку:
Код: xml
1.
2.
         <argument>-b</argument>
         <argument>my_branch_name</argument>


Имя ветки можно параметризировать и забирать файлы из нужной.

Почему файлы лежат в репозитории - потому что Spring cloud config-service умеет в настройках работать с git.
Да, можно было бы хранить файлы в директориях рядом с проектом, в репозитории самого проекта, но тогда надо было бы плодить их не известно сколько штук, да и управлять неудобно.
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39901003
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic, посмотри еще подмодули. (Это в переводе Чакона и Штрауба книги.)
В командах это выглядит как-то так:

Код: java
1.
git submodule add https://github.com/......



Разумеется это работает если родтельский проект тоже стоит под git.
Я лично это не использовал. Поэтому деталей не знаю.
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39901045
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, понял, спасибо, я подмодули рассматривал как-то по другой задаче, так и не задействовал.
В итоге сделал вот так:
В pom.xml имеем 2 профиля:
1-й использует плагин для клонирования из репозитория config-repo файлов в папку сборки target/classes/config/
2-й этого не делает.

pom.xml
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
<profiles>
        <profile>
            <!-- Профиль используется для подтягивания(по факту клонирование репозитория) файлов конфигурации из репозитория config-repo,
            при этом  для конкретного заказчика, нужно собрать настроенные под него файлы конфигурации в определенной ветке, например в feature/MY_BRANCH.
            Необходимо указать имя ветки заказчика в значении properties <env.GIT_BRANCH> ниже
            Для работы напрямую с файлами репозитория и веткой,
            нужно(но не обязательно, т.к. файлы в exploded сборке в classes/config/ просто будут игнорироваться) пересобрать проект с мавен-профилем git
            и/или запустить проект с параметрами spring.profile.active=dev,  GIT_URI и GIT_BRANCH, подробнее см. комментарии в application.yml -->
            <id>dev</id>
            <properties>
                <activatedProperties>dev</activatedProperties>
                <env.GIT_BRANCH>feature/dev</env.GIT_BRANCH>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <version>1.4.0</version>
                        <executions>
                            <execution>
                                <phase>initialize</phase>
                                <id>clone_and_put_to_resources</id>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <executable>git</executable>
                            <arguments>
                                <argument>clone</argument>
                                <argument>-b</argument>
                                <argument>${env.GIT_BRANCH}</argument>
                                <argument>http://scm.some.ru:7999/scm/back/config-repo</argument>
                                <argument>${project.build.outputDirectory}/config/</argument>
                            </arguments>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>git</id>
            <properties>
                <activatedProperties>git</activatedProperties>
            </properties>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
        </profile>
    </profiles>



Запускать проект будем либо без указания профиля спринга, тогда конфиг-сервис будет отдавать клиентам файлы конфигураций из папки target/classes/config/, если укажем профиль "git", ну это я сам так его назвал, для сходства с профилем мавена, то будут использоваться файлы напрямую из репозитория из указанной ветки.
При этом настройки для spring cloud ,получаются такими:


application.yml
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          # ссылка на репозиторий с конфиг-файлами для сервисов-клиентов
          uri: ${GIT_URI:http://scm.some.ru:7999/scm/back/config-repo}
          # ветка, откуда будут собираться конфиг-файлы из репозитория
          default-label: ${GIT_BRANCH:master}
          repos:
            local:
              # config-service при запуске без параметра spring.profile.active=dev будет брать по-умолчанию параметры из папки classes/config/
              # иначе будет отдавать параметры из репозитория указанного выше
              pat tern: native*
              uri: file:///${project.build.outputDirectory}/config/
  profiles:
    # профиль спринг по-умолчанию будет активным, то есть будет отдавать сервисам-клиентам файлы конфигурации из папки classes/config/
    active: native
    # если при запуске есть параметр spring.profile.active=dev, то данные будут тянуться из репозитория указанного выше.
    include: dev
    ###
    # пример строки запуска с переменными, на всякий случай :) :
    # GIT_URI=http://scm.some.ru:7999/scm/back/config-repo;GIT_BRANCH=feature/my_branch;spring.profiles.active=dev
    # файлы будут подтянуты из указанного репозитория и ветки, будут задействованы только если профиль указан как dev.
    # если не указать профиль dev, то сервисам клиентам файлы будут отдаваться из папки classes/config/,  то есть будет использован профиль по-умолчанию - native
    # и параметры  GIT_URI и GIT_BRANCH не будут задействованы.
    ###



Очень похоже на велосипед, ну или слишком замороченную сборку, но пока по другому я не придумал как решить проблему использования конфиг-сервиса так, чтобы можно было разные места ему указывать, чтобы он находил файлы конфигураций клиентов и отдавал им нужные при обращении.
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39901052
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хех, написал, что профиль назвал "git", а сам в коде спринг конфигах указал "dev"))
ну не суть, ладно :)
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39901054
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic
пока по другому я не придумал
клиентам еще делают бвтники или sh файлы скрипты для установки продуктов.
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39901076
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic
Spring cloud config-service умеет в настройках работать с git.

Nixic
Ставить git и держать у себя на серверах репозитории они не будут.

Если у вас облака проект, то у заказчика не так?
Git не нужен заказчику как облако в продакшене или РАСПРЕДЕЛЕННЫЕ ПРИЛОЖЕНИЯ?
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39901096
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё оказалось куда сложнее)) заказчик поставляет продук своим заказчикам и все мои наработки пошли лесом, оставляем конфиг-файлы в папке ресурсов проекта и отдаем заказчику сервисы с инструкцией куда какие параметры класть для конкретных стендов.
Да и фиг с ним, хоть поигрался с мавеном и профилями)) Но на самом деле печальненько как-то...
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39901125
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
Вот именно что поигрался.
Сложно выходило у тебя.
Если нет облаков, то надо проще, вплоть до общего конфига на продукт.
Если Spring cloud config-service то под конфиги целы сервер у заказчика.
Имхо
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39901261
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic
Всё оказалось куда сложнее)) заказчик поставляет продук своим заказчикам и все мои наработки пошли лесом, оставляем конфиг-файлы в папке ресурсов проекта и отдаем заказчику сервисы с инструкцией куда какие параметры класть для конкретных стендов.
Да и фиг с ним, хоть поигрался с мавеном и профилями)) Но на самом деле печальненько как-то...


Вообще-то желательно большую часть конфигурационных параметров забирать через переменные окружения.
Ну типа сейчас "стильномодномолодежно" все в докерах делать, а там параметры передаются через переменные окружения (см. например docker-compose)
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39901288
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

Вообще-то желательно большую часть конфигурационных параметров забирать через переменные окружения.
Ну типа сейчас "стильномодномолодежно" все в докерах делать, а там параметры передаются через переменные окружения (см. например docker-compose)
Ага, запускаешь ps, а там все пароли плейнтекстом :)
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39901291
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
mad_nazgul

Вообще-то желательно большую часть конфигурационных параметров забирать через переменные окружения.
Ну типа сейчас "стильномодномолодежно" все в докерах делать, а там параметры передаются через переменные окружения (см. например docker-compose)
Ага, запускаешь ps, а там все пароли плейнтекстом :)


Jasypt?!
:-)
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39901321
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

Jasypt?!
:-)
Да проблема-то совсем не в этом (есть или нет разного рода костыли), а в тенденции: ну вот тот же докер, при всей его ущербности, позволяет "довольно безопасно" бутстрапить приложения - там по спецификации есть /bootstrap.sh - можно просто обмазаться кодом на sh или другом любимом интерпретаторе, однако в реальности народ читает какие-то мурзилки в духе: вот в контейнер можно передавать переменные окружения или еще какие аргументы - это офигеть как "удобно", в итоге все изначально делает полную херню.

Я вот совсем недавно заморачивался по поводу того, чтобы один проект выложить на github и чтобы его артефакты попадали в maven central, вот оно вручную выглядит все довольно просто, однако когда пытаешься это дело автоматизировать (у гитхаба для OSS есть халявная интеграция с Travis CI), то получается какой-то колхоз в духе: вот в .travis.yml положите свои пароли (можно зашифровать) и оно будет работать, да я даже зашифрованные пароли в открытый доступ класть не хочу - я хочу себе отдельную "папочку" именно в Travis CI куда я смогу складывать свои пожитки и не светить всему миру информацию о том как я собираю приложение и его публикую.

В целом же получается что весь мир ебанулся со всеми этими облаками и прочей херней, лет 5 назад был хайп про IoT, там даже MITRE объявления писала в духе: ребята, мы дефекты безопасности по IoT обрабатываем крайне медленно, потому что там полная жопа, а результат такой, что вот у меня в доме никакого IoT нет (ну вот это реально хрень получается: лампочками можно управлять по вафле (ребенок просил купить, ему было интересно), но при нажатии "включателя" они загораются секунды через две, т.е. результат такой что освещенность руками регулировать у меня потребности нет, а вот то что свет включается через несколько секунд - это реально напрягает, ну и итог предсказуемый)

мне так кажется, что в скором времени докер (как компания) умрет, т.е. все эти контейнеры подберет под себя красная шапка (они восьмерку уже выпустили с podman, который совместим с докером + имеет собственные фишки), а несколько позже ребята все сделают по уму, а не так как сейчас.
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39901603
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов

В целом же получается что весь мир ебанулся со всеми этими облаками и прочей херней, лет 5 назад был хайп про IoT, там даже MITRE объявления писала в духе: ребята, мы дефекты безопасности по IoT обрабатываем крайне медленно, потому что там полная жопа, а результат такой, что вот у меня в доме никакого IoT нет (ну вот это реально хрень получается: лампочками можно управлять по вафле (ребенок просил купить, ему было интересно), но при нажатии "включателя" они загораются секунды через две, т.е. результат такой что освещенность руками регулировать у меня потребности нет, а вот то что свет включается через несколько секунд - это реально напрягает, ну и итог предсказуемый)


Это бизнес - ничего личного.
Основная задача всей это движухи "продавать воздух".
Т.е. подсадить пользователей на "подписку".

Крайним выражением этого движа AWS-лямбда. Севрерлесс так называемый.

Точно не помню то ли в 12, то ли 14 году в США проталкивали закон, чтобы все СМБ в обязательном порядке использовали облака, а не свои мощности для ИТ задач.

Андрей Панфилов

мне так кажется, что в скором времени докер (как компания) умрет, т.е. все эти контейнеры подберет под себя красная шапка (они восьмерку уже выпустили с podman, который совместим с докером + имеет собственные фишки), а несколько позже ребята все сделают по уму, а не так как сейчас.


Не думаю, что докер как решение умрет.
Скорее его потеснят решения типа AWS-Лямбда. Но это будет не прям щас.
...
Рейтинг: 0 / 0
Maven, скопировать из git репозитория файлы и положить из в resources
    #39901795
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

Не думаю, что докер как решение умрет.
Скорее его потеснят решения типа AWS-Лямбда. Но это будет не прям щас.

Ничего Лямбда не вытеснит. Они в стеке стоят на разных уровнях. Или даже лежат в плоскости разных технологий.
Тот-же амазон продает как AWS-Lambda так и Amazon-ECS. Они существуют вместе.
Лямбда также имеет очень серъезные архитектурные лимиты (там и ограничение времени
жизни и память и состояние) которые вообще не дают возможности портировать
приложение as is на Lambda без потерь или без полной переработки.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Maven, скопировать из git репозитория файлы и положить из в resources
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]