Условное исключение файла из компиляции в проекте maven - PullRequest
3 голосов
/ 17 мая 2011

Какой самый простой / правильный способ условно исключить Java-файл из компиляции в проекте maven?

Я хотел бы иметь возможность установить логические свойства в файле pom.xml:

<properties>
    <IncludeMayBe>true</IncludeMayBe>
</properties>

...

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <excludes>
            ????

        </excludes>
    </configuration>
</plugin>

Есть ли способ возиться с плагином компилятора?Или я должен пойти на профили?Я чувствую, что создание профиля является излишним, но, возможно, это единственное решение ...

РЕДАКТИРОВАТЬ:

Мы установили, что профили являются решением.Для условной активации из pom.xml можно использовать следующее:

<profiles>
  <profile>
    <activation>
      <property>
        <IncludeMayBe>true</IncludeMayBe>
      </property>
    </activation>
    ...
  </profile>
</profiles>

Ответы [ 2 ]

5 голосов
/ 17 мая 2011

Я предлагаю вам использовать плагин Build helper maven .Используя это, вы можете иметь несколько исходных каталогов.Затем вы можете контролировать, какие исходные каталоги включены с помощью профилей.

Предполагая, что ваши классы мониторинга находятся в каталоге src / monitor / java, вы можете добавить следующее к элементу в вашем pom.xml

<profiles>
    <profile>
        <id>monitoring</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.5</version>
                    <executions>
                        <execution>
                            <id>add-sources</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>add-source</goal>
                            </goals>
                            <configuration>
                                <sources>
                                    <source>${basedir}/src/monitoring/java</source>
                                </sources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
1 голос
/ 17 мая 2011

Вы не можете сделать это, используя плагин компилятора (см. Ниже).

Но даже если бы вы могли, это не правильно.Это будет означать, что файлы в JAR-файле артефакта будут зависеть от параметров командной строки и / или настроек среды, и это затрудняет воспроизведение сборок для других пользователей.

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


Я посмотрел исходный код плагина компилятора mojo, и похоже, что нет способа настроить исходный код/ исключить фильтры.В какой-то момент кто-то реализовал фильтры, но соответствующие Map объекты являются частными, и нет возможности заполнить их, и, следовательно, нет возможности использовать эту функцию.

Код здесь: http://svn.apache.org/viewvc/maven/plugins/tags/maven-compiler-plugin-2.3.2/src/main/java/org/apache/maven/plugin/

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

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