LINUX.ORG.RU

Мне надо почистить авгиевы конюшни

 ,


0

1

Есть проект, который написал не я. Он написан на Java, для его сборки используется Maven.

У проекта есть проблема. Он очень заточен на конфигурацию эклипса разработчика и на его рабочую станцию вообще. Вплоть до того, что светится абсолютный путь к некоторым библиотекам, а также нужно обязательно повторять некоторые шаманства при его конфигурации (например, выкидывать J2SE1.5 и вставлять JavaSE-1.7 каждый раз после апдейта).

Java на уровне языка я знаю только постольку, поскольку знаю другие языки программирования. В системах сборки не ориентируюсь почти что никак. Мне бы сильно помог чеклист, пройдя который, я смогу уверенно заявить:

1) проект можно собрать, не используя IDE (ну там ant запустить, и он все сделает сам)
2) конфигурация IDE не упоминает третьесторонних ресурсов, которые не управляются Maven'ом и которые лежат хрен знает где
3) сразу после свежего импорта в свежую Eclipse с поддержкой Java и Maven можно тыцнуть в Run as Java application и получить рабочую программу, без единой правки.

Теоретически я могу сам почистить все согласно этому списку, но это нежелательно. У меня есть возможность заставить разработчика все это сделать, но он будет ныть, что это очень сложно и требует очень много времени. Я этому не верю (особенно после того, как исправил за 20 минут его баг, о котором он мне пел песни, что это на день работы — не зная как следует ни кодовой базы, ни языка), но крыть мне нечем, чтобы доказать обратное.

Помогите, кто чем может.
Спасибо.

★★★★★

Последнее исправление: CYB3R (всего исправлений: 2)

Java на уровне языка я знаю только постольку, поскольку знаю другие языки программирования. В системах сборки не ориентируюсь почти что никак.

Но зато уже втыкаем тег «быдлокод»

malbolge ★★
()
Ответ на: комментарий от shimon

У меня есть возможность заставить разработчика все это сделать, но он будет ныть

по-моему это процесс административный. или он пишет «портируемый» код или с него неустойка/штраф за каждый день просрочки deadline и т.п.

beastie ★★★★★
()

1) проект можно собрать, не используя IDE (ну там ant запустить, и он все сделает сам)

так Maven же есть: mvn compile (только компиляция) или mvn package (компиляция, прогон тестов, сборка jar/war).

Kadi
()
Ответ на: комментарий от malbolge

Но зато уже втыкаем тег «быдлокод»

Согласен, теги взаимозаменяемы, зачем повторяться.

anonymous
()

1 и 2) ставишь nexus как репозиторий и hudson как CI и исправляешь до тех пор, пока проект не начинает в них собираться (сторонние либы, недоступные в других репозиториях заливаешь в nexus, для остальных репозиториев настраиваешь зеркалирование)

3)не получится, в слишком эклипсе своеобразная поддержка мавена, впрочем если пункты 1 и 2 будут выполнены, то скорее всего проблем не будет.

maloi ★★★★★
()
Ответ на: комментарий от malbolge

Абсолютные пути = быдлокод. Всегда. По определению.

anonymous
()

не специалист в йаве, но слышал, что maven - то, что доктор прописал.

nanoolinux ★★★★
()

Он написан на Java, для его сборки используется Maven.
У проекта есть проблема. Он очень заточен на конфигурацию эклипса разработчика и на его рабочую станцию вообще.

Это надо было очень постараться, чтобы сделать проект с maven, завязанный на конкретную машину.

1) Надо посмотреть все system-scope dependencies в pom.xml. И выкинуть как можно больше из них. Лучше всего - сделать локальный maven-репозиторий для этих зависимостей.

2) Следующим шагом, если maven на одной из стадий запускает ant, нужно поискать абсолютные пути в билдфайле. И вынести их в проперти.

3) Если mvn compile теперь работает - ура. Если нет - надо поискать, не запускает ли билдфайл какие-нибудь скрипты.

4) Если и это не помогло, надо посмотреть, нет ли в билдфайле кастомных тасков. Если есть - поизучать их код, и выскрести из него все хардкодные пути в проперти / атрибуты таска.

5) Если все это не помогло - сюда хотя бы pom.xml, иначе не поможем.

zhuravlik ★★★★
()
Ответ на: комментарий от malbolge

все правильно ТС написал. За такое вообще руки отрывать надо.

Мне бы сильно помог чеклист

для первый двух ппунктов чеклист простой:
Берется виртуалка с голой системой, apt-get install нужные_пакеты, svn checkout путь_к_проекту, mvn package. Т.е. грубо говоря все то, что делает новый разработчик на проекте/билдсервер.
Третий пункт вообще говоря, неверен. Только проекты уровня хеллоу ворлд можно так запустить. Нормальные проекты требуют некоторой скриптовой конфигурации (ну там JDBC в глассфише настроить, MQ насоздавать, базу заинсталлить, запустить стартовые скрипты для создания каких-нибудь словарей там), ну много бывает, а то и вообще ручной конфигурации (например, прописывание айпишников мастера при кластеризации без мультикаста), хотя это уже хуже.

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

JFreeM ★★★☆
()
Ответ на: комментарий от JFreeM

Что вы нашли сложного в нексусе? Он же прост как валенок

jreznot
()
Ответ на: комментарий от BillDver

Давай исходники, мы посмеемся

Я бы с радостью, но программа не опенсорс — низзя.

Но примерчик можно.

В программе есть табличка с диапазонами дат. Даты редактируются JXDatepicker'ом. Табличка сохраняется в SQLite. Ну так вот, вы думаете, в модели там даты?

Вот как подставляется параметр для сохранения в базу:

prep.setString(1, period.getFields().get(0) != null ? period.getFields().get(0).toString() : null);
В результате в базу идут строки вида 12/12/2012. А я-то думаю наивно, отчего это у меня конструкции вида «date('now') between foo.start and foo.end» не работают. Похоже, я открыл банку с червяками и надо искать банку размером побольше.

shimon ★★★★★
() автор топика
Последнее исправление: shimon (всего исправлений: 3)

В случае с мавеном проблемой могут быть библиотеки, которых по каким то причинам (обычно лицензионным) нет в публичном репозитории. Полагаю, из за этого какие то пути и прописаны в конфиге. В компаниях обычно делают свой корпоративный репозиторий, в случае обычного проекта я бы сделал каталог с библиотеками и простой скрипт для их установки в локальный репозиторий (HOME/.m2).

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

Это так, информация по теме. А твои требования абсолютно разумны и должны выполняться, нет никаких причин, чтобы все так не работало (за исключением, как я уже сказал, некоторых библиотек, которых нет и не может быть в публичном репозитории, в этом случае может потребоваться дополнительный шаг после чекаута и перед билдом/импортом).

Касательно чеклиста - проект обычно собирается командой mvn package, конфигурация ide как таковая вообще не должна присутствовать в файлах проекта, а должна генерироваться при импорте.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.