Использование нескольких исходных папок (как промежуточный шаг в преобразовании большого Java-проекта в Maven) - PullRequest
4 голосов
/ 09 марта 2011

Я конвертирую большой Java-проект в Maven.У меня есть МНОГО взаимозависимостей, но я хотел бы получить его с помощью maven, прежде чем приступить к реальной работе по очистке.Я разбил его на несколько модулей плюс один гигантский модуль;давайте назовем этот модуль монолитным.Monolith имеет обычные классы Java и некоторые классы gwt (с взаимозависимостями).Я разделил две части, чтобы иметь структуру каталогов, подобную этой:

. / Src / main / java /...
./src/client/gwt/...

Итак, я могу легко заставить это скомпилировать в eclipse с m2eclipse, но тогда я не могу найти, как заставить его скомпилировать с maven.Я видел, что в файле pom есть раздел сборки, в котором вы можете указать альтернативный источник и цель, но я думаю, что это не повторяемый атрибут в pom:

<build>
    <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
</build>

В eclipse я могу настроить проектФайл .classpath (в свойствах проекта) для добавления дополнительных исходных файлов (и выходных каталогов) для выполнения того, что я хочу сделать.

Есть ли способ сделать это, или мне нужно выработатьсначала зависимости, и разделить на отдельные модули?

Ответы [ 3 ]

5 голосов
/ 09 марта 2011

Если вы пойдете против зерна с мавеном, это будет тяжелая битва.
Maven не склоняется к нескольким основным исходным каталогам, они лучше работают в среде maven как отдельные модули.
Я рассмотрел несколько проектов и архетипов Maven GWT, и ни один из них, похоже, не соответствует предложенному вами подходу.
Взгляните на исходную структуру, используемую Hupa , а также посмотрите архетипы из блога Ham and Eggs

Они также обслуживают App Engine.

Если вам действительно нужно отделить исходный код java-сервера от исходного кода клиента gwt, монолит нужно разделить на несколько модулей.
Проекты gwt со структурой пакетов довольно часто встречаются следующим образом:

com.company.project
                   .client
                   .server
                   .shared

А затем укажите исходные пути в вашем gwt.xml для включения клиента и общего доступа

5 голосов
/ 09 марта 2011

То, что у вас есть, называется мультимодульным проектом Maven. Взгляните на этот учебник на Maven Book.

Итак, я могу легко получить это для компиляции в затмении с m2eclipse, но потом я не могу найти, как его достать скомпилировать с maven.

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

1 голос
/ 10 марта 2011

попробуйте следовать этому уроку http://maven.apache.org/plugins/maven-eclipse-plugin/reactor.html Основная идея - начать с создания пустого проекта из архетипа maven mvn: создать , а затем поместить источники в созданную структуру maven ... Кроме того, я настоятельно рекомендую проверить ваше дерево зависимостей и эффективный pom с помощью плагина eclipse, когда вы выполняете эту задачу (во избежание дублирования в dep.

...