Компиляция Maven с несколькими каталогами src - PullRequest
177 голосов
/ 07 ноября 2008

Есть ли способ собрать несколько исходных каталогов Java в одном проекте Maven?

Ответы [ 7 ]

259 голосов
/ 07 ноября 2008

Вы можете добавить новый исходный каталог с помощью build-helper:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>src/main/generated</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
48 голосов
/ 13 мая 2014

Я наивно делаю это так:

<build>
  <finalName>osmwse</finalName>
  <sourceDirectory>src/main/java, src/interfaces, src/services</sourceDirectory>
</build>
34 голосов
/ 07 ноября 2008

Это сработало для меня

<build>
    <sourceDirectory>.</sourceDirectory>
    <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
        <includes>
            <include>src/main/java/**/*.java</include>
            <include>src/main2/java/**/*.java</include>
        </includes>
        </configuration>
        </plugin>
    </plugins>
</build>
15 голосов
/ 22 февраля 2012

, чтобы он работал в IntelliJ, вы также можете добавить

<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory>

в maven-compiler-plugin

10 голосов
/ 17 августа 2013

Это также работает с Maven путем определения тега ресурсов. Вы можете называть имена папок src как угодно.

    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.java</include>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
        </resource>

        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.java</include>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
        </resource>

        <resource>
            <directory>src/main/generated</directory>
            <includes>
                <include>**/*.java</include>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
2 голосов
/ 11 ноября 2011

Использовал build-helper-maven-plugin из поста - и обновил src / main / generate. И mvn clean compile работает на моем ../common/src/main/java или на ../common, поэтому сохранил последнее. Тогда да, подтверждая, что уровень компиляции IntelliJ IDEA (версия 10.5.2) не удался, как упоминал Дэвид Филлипс. Проблема заключалась в том, что IDEA не добавляла в проект другой источник root. Добавление его вручную решило проблему. Это нехорошо, так как редактирование чего-либо в проекте должно исходить от maven, а не от прямого редактирования опций проекта IDEA. Тем не менее, я буду в состоянии жить с ним, пока они не будут напрямую поддерживать build-helper-maven-plugin, так что он будет автоматически добавлять источники.

Тогда нужен был другой обходной путь, чтобы сделать эту работу, хотя. Так как каждый раз, когда IDEA повторно импортировал настройки maven после смены pom, вновь добавленный источник сохранялся в модуле, но он терял выбор исходных папок и был бесполезен. Так что для ИДЕИ - нужно установить их один раз:

  • Выбрать - Настройки проекта / Maven / Импорт / сохранить источник и проверить папки на реимпорт.
  • Добавить - Структура проекта / Настройки проекта / Модули / {Модуль} / Источники / Добавить корень контента.

Теперь сохранение этих папок при импорте - тоже не лучшая практика в мире, ... но попробуйте.

1 голос
/ 16 февраля 2013

Это можно сделать в два этапа:

  • Для каждого исходного каталога вы должны создать собственный модуль.
  • Во всех модулях вы должны указывать один и тот же каталог сборки: ${build.directory}

Если вы работаете с запущенной Jetty (jetty:run), то перекомпиляция любого класса в любом модуле (с Maven, IDEA или Eclipse) приведет к перезагрузке Jetty. То же самое поведение вы получите для измененных ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...