|
|
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
Уважаемые гуру, помогите пожалуйста. Ситуация следующая - есть приложение JSF в *.war, приложение будут использовать 5 клиентов. Для каждого из клиентов приложение отличается лишь ОДНИМ классом и лишь ОДНИМ файлом, который лежит в \webapp\META-INF\context.xml. Согласитесь что глупо создавать 5 копий приложения для каждого из клиентов, а потом все это сопровождать. В андроиде в IDEA с использованием gradle проблема решается весьма просто, но как такое сделать в жаве? Курю третий день мануалы maven и gradle - но решения не нашел. Дайте пожалуйста пример кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 08:30 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
Рискну предположить что надо взять android+gradle и использовать подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 08:42 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
maytonРискну предположить что надо взять android+gradle и использовать подход. Наверное андроидный плагин для gradle ничего не знает о структуре приложения JSF, т.к. а андроиде каталоги приложения совсем иные, или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 08:49 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
Микола Питерский, 1) Для context.xml вот это вот http://gradle.org/blog/feature-spotlight-gradles-support-maven-pom-profiles/ Но, вообще, я против того чтобы context.xml держать внутри war модуля. 2) Для классов лучше таки запхать в код все 5 вариантов и выбирать нужный в рантайме. У вас описание проблемы, как обычно. Вы выбрали своё решение своей проблемы и спрашиваете про ваше решение, но не про саму проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 08:53 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz1) Для context.xml вот это вот http://gradle.org/blog/feature-spotlight-gradles-support-maven-pom-profiles/ Хотя, я бы сильно подумал о том подходят ли здесь профили или нужны они вообще. Намного удобнее, по возможности, иметь одну версию .war для всех 5 вариантов. context.xml генерить во время сборки в 5 вариантах и деплоить отдельно от war. Правда в Tomcat нужно тогда отключасть autodeploy, чтобы он context.xml не удалял. А классы, как я уже написал выше, разруливать в рантайме через полиморфизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 08:55 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczУ вас описание проблемы, как обычно. Вы выбрали своё решение своей проблемы и спрашиваете про ваше решение, но не про саму проблему. Я не выбрал свое решение, я хочу узнать - как лучше решить данную проблему без разницы каким методом, главное чтобы было удобно, просто и надежно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 08:58 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
Микола ПитерскийЯ не выбрал свое решение, я хочу узнать - как лучше решить данную проблему без разницы каким методом, главное чтобы было удобно, просто и надежно? Ну, так вы знаете проблему. А мы нет. Мы знаем только предложенное вами решение в виде "прекомиляции". Чем именно отличаются классы и context.xml? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 09:10 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
Микола Питерский, А что мешает сделать нехардкод... Ну включите к себе в проект какой нибудь ScriptEngener И по какому то признаку(login клиента его ИНН в базе и т.д) делаете ветвление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 09:53 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
Микола ПитерскийmaytonРискну предположить что надо взять android+gradle и использовать подход. Наверное андроидный плагин для gradle ничего не знает о структуре приложения JSF, т.к. а андроиде каталоги приложения совсем иные, или я не прав? Попробуй maven profiles. В твоём случае надо создать 5 профилей по 5 клиентам. http://maven.apache.org/guides/introduction/introduction-to-profiles.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 10:46 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
maytonМикола Питерскийпропущено... Наверное андроидный плагин для gradle ничего не знает о структуре приложения JSF, т.к. а андроиде каталоги приложения совсем иные, или я не прав? Попробуй maven profiles. В твоём случае надо создать 5 профилей по 5 клиентам. http://maven.apache.org/guides/introduction/introduction-to-profiles.html Попробовал - не получилось. Если бы кто показал бы свой .pom с решением аналогичной проблемы. Так как спрашивал у знакомых - все говорят что на 5 клиентов надо 5 копий программы - а что ты хочешь это же жава:) Но если в андроиде эту проблему при помощи gradle сосилили - неужто для жавы нету никакого плагина умеющего это делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 12:27 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
Микола Питерскийвсе говорят что на 5 клиентов надо 5 копий программы - а что ты хочешь это же жава:) Ну, что с них взять, если они Java в глаза не видели. [quot Микола Но если в андроиде эту проблему при помощи gradle сосилили - неужто для жавы нету никакого плагина умеющего это делать?[/quot] Ну, что за бред? Андроид это почти та же Java, и тот же Gradle для сборки. Если вы умеете делать это под андроид, то что вам мешает сделать тоже самое под JEE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 12:31 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНу, так вы знаете проблему. А мы нет. Мы знаем только предложенное вами решение в виде "прекомиляции". Чем именно отличаются классы и context.xml? Да -если вариант с перекомпиляцией не пройдет - остается только программно разрулить - для класса это не проблема, а вот для context.xml не знаю как сделать - там данные для jDBC подключения и для каждого клиента он другой и вызывается он из web.xml Как программно подключить другой context.xml? Еще тогда проблема будет - в *.war будет 5 context.xml для каждого клиента - что есть плохо тамже реквизиты доступа, как сделать чтобы из готового *.war "лишние" context.xml удалялись? И еще - в андроиде можно для финальной сборки "натравить" обфускатор proguard, который вырежет все ненужное - н-р в классе вырежет данные по 4-м клиентам, как неиспользуемые. А как быть с этим в жаве? Или правда 5 клиентов - 5 проектов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 12:35 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
Микола Питерскийа вот для context.xml не знаю как сделать - там данные для jDBC подключения и для каждого клиента он другой и вызывается он из web.xml Ну, вот это, ведь, уже совсем другой разговор. По сути. Выходит не нужен вам context.xml внутри war. В этом смысла 0. С таким подходом вы пароли от БД для всех 5 клиентов должны держать в репозитории исходного кода. А всего-то надо DataSource настроить на самом сервере. Доступ к серверу клиента имеет админ. Пароль от базы тоже имеет админ. Это целиком и полностью его работа. Вам нужно только договорить о JNDI имени и использовать его. Таким образом вы сможете один единственный .war деплоить хоть на 5 серверов, хоть на 10. Вам не нужно будет пересобирать ваш war модуль каждый раз когда пароль к БД заэкспарится, например. Подумайте об этом. Такой подход упрощает деплоймент и саппорт очень сильно. И только если по каким-то надуманным ограничениям вам такой вариант не подходит, тогда есть смысл использовать профили Maven. О том как их использовать из Gradle, я вам выше дал ссылку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 12:43 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНу, что за бред? Андроид это почти та же Java, и тот же Gradle для сборки. Если вы умеете делать это под андроид, то что вам мешает сделать тоже самое под JEE? Да но только в андроиде для Gradle используется специальный плагин apply plugin: 'com.android.application' и только тогда Gradle и IDEA понимает многовариантную сборку и в IDEA после этого появляется вкладка с вариантами компиляции со значком андроида. Если есть такой плагин для жавы - подскажите пожалуйста. Вот конфиг Gradle для андроида - в результате есть 6 вариантов сборки проекта local, demo, full - это каталоги на уровне каталога main. В этих каталогах лежат файлы с именами такими же как и в main и соотвествующая сборка заменяет этими файлами файлы из main. Код: java 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. Вот как такое прикрутить к жаве? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 12:52 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
Микола ПитерскийДля каждого из клиентов приложение отличается лишь ОДНИМ классом и лишь ОДНИМ файлом, который лежит в \webapp\META-INF\context.xmlКурить доку по описателям развёртывания вашего сервлет-контейнера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:50 |
|
||
|
Build variants или ifdef - как?
|
|||
|---|---|---|---|
|
#18+
Микола Питерский, посмотри еще тут пример http://stackoverflow.com/questions/1149352/using-maven-for-multiple-deployment-environment-production-development ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2016, 19:56 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=95&tid=2123993]: |
0ms |
get settings: |
12ms |
get forum list: |
22ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
57ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 425ms |

| 0 / 0 |
