Pull to refresh

Создаем воркспейс для IntelliJ IDEA из мавен проекта

Reading time4 min
Views25K
Давным-давно я работал в одной большой компании, мы писали JEE приложения. Тогда еще была IntelliJ IDEA 4.0. Один из проектов состоял примерно из 30 модулей. Создание воркспейса с нуля занимало кучу времени, поэтому воркспейс хранился в svn. Кто-то сидел на IDEA 4.0, кто-то на IDEA 5.0, и когда кто-то комитил свои iml'ки и ipr'ки в svn, то другие жутко сердились из-за того, что слетали их личные настройки, поэтому у всех был свой личный воркспейс, а новые программисты мучались с уже нерабочим из svn.

Потом появился мавен и maven-idea-plugin, стало возможно создавать воркспейс из мавен проекта. Потом появился плагин «Maven Integration»: интеграция мавена и IDEA, стало возможно открывать сразу мавен проект.

В начале 2010 года у меня была пара проектов примерно с 20 модулями каждый, и я тратил немного времени на их настройку. Сейчас у меня 20 проектов, в каждом около 50 модулей, у каждого проекта есть несколько бранчей и тэгов. Было очень трудно создавать и переключаться между воркспейсами. Другим программистам тоже было трудно, они тоже тратили много времени на создание и настройку воркспейса. Было ощущение, что программисты совсем не тем занимались.

Если использовался maven-idea-plugin для создания воркспейса, то после него приходилось дотачивать воркспейс следующим образом:
1. Поставить кодировку UTF-8
2. Поставить галочку «Transparent native-to-ascii conversation»
3. Добавить Redmine в «Issue Navigation»
4. Поставить нужную «Project JDK»
5. Поставить нужный «Project language level»
6. Добавить в «Run Configuration» томкат, указать параметры старта, указать web-модуль
7. В web-артефакте указать «Output directory» совпадающую с мавеновской.
8. Выбрать компилятор «Javac in-process (Java6+ only)».

Если использовался плагин Maven Intergration, то приходилось делать все тоже самое, плюс еще руками создать web-артефакт. У меня был рекорд: конфигурация воркспейса за 10 минут. Вроде немного, но делать все эти действия каждый раз мне надоело очень быстро.

Последняя версия maven-idea-plugin из repo1.maven.org датируется августом 2008 года. Исходный код этого плагина насколько индуский, что писать патч не было никакого желания. Было желание сделать все по-своему: чтобы не тормозило, чтобы было расширяемо, чтобы код читался, чтобы все наконец-то перестали тратить время на создание воркспейсов.

За два выходных был написан свой maven-idea-plugin и размещен на Google Code. Название такое же, чтобы запускалось как «mvn idea:idea» и легко запоминалось.

Плюсы нового плагина:
1. По умолчанию плагин не качает исходники. Раньше, после «mvn idea:idea», приходилось долго ждать на тех библиотеках, у которых нет исходников, а если запускать «mvn idea:idea -DdownloadSources=false», то исходники вообще не подключатся в воркспейсе. Сейчас исходники всегда подключаются в воркспейсе, но качаются только если явно сказать «mvn idea:idea -DdownloadSources=true»

2. Плагин не требует скомпилированных библиотек в локальном репозитарии. Раньше, чтобы собрать воркспейс, требовалось собрать проект через «mvn clean install», это отнимало еще около 10 минут.

3. И самое главное, плагин позволяет создавать воркспейсы, которые не надо потом дотачивать. Сейчас существует ровно 20 параметров. Подробнее на http://code.google.com/p/maven-idea-plugin/wiki/HowToInstall

Чтобы подключить плагин, требуется указать в своем главном pom.xml конфигурацию плагина и репозитарий:

<build>
    <plugins>
        <plugin>
            <groupId>com.googlecode</groupId>
            <artifactId>maven-idea-plugin</artifactId>
            <version>1.3</version>
        </plugin>
    </plugins>
</build>

<pluginRepositories>
    <pluginRepository>
        <id>maven-idea-plugin-repo</id>
        <url>http://maven-idea-plugin.googlecode.com/svn/maven-repo</url>
    </pluginRepository>
</pluginRepositories>

Если среди модулей встретится war-packaging модуль, то автоматически добавится web-артефакт, и томкат-конфигурация. Сам сервер томката должен быть заранее добавлен, это глобальная конфигурация IDEA. После открытия воркспейса можно будет сразу запустить томкат. Многие параметры, такие как название сервера или имя JDK, ставятся по умолчанию, но их можно изменить в конфигурации плагина:

<plugin>
    <groupId>com.googlecode</groupId>
    <artifactId>maven-idea-plugin</artifactId>
    <version>1.3</version>
    <configuration>
        <applicationServerTitle>My Web Application</applicationServerTitle>
        <openInBrowser>true</openInBrowser>
        <openInBrowserUrl>http://127.0.0.1/app?page=MyList</openInBrowserUrl>
        <reformatCodeBeforeCommit>true</reformatCodeBeforeCommit>
    </configuration>
</plugin>

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

Цель плагина — это сделать так, чтобы совсем не тратить время на настройку IDEA: сделал чекаут нужного бранча, запустил «mvn idea:idea», нажал запуск томката и все.

Tags:
Hubs:
+2
Comments8

Articles