В Maven, как исключить файлы src при компиляции при наличии пользовательского пути src?

Я пытался преобразовать старые java-проекты в сборку maven, но столкнулся с трудностями, за исключением исходных файлов:

когда я поставил цель установить родительский проект для компиляции и сборки jar-файлов для всех проектов, он все равно пытается скомпилировать упомянутый исключенный java-файл. Ниже мой pom.xml для этого проекта:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.app</groupId>
    <artifactId>CCAPS.Impl</artifactId>
    <version>1.0.0</version>

    <parent>
        <groupId>com.app</groupId>
        <artifactId>parent</artifactId>
        <version>1.0</version>
        <relativePath>../Maven.Convertion/parent</relativePath>
    </parent>

    <properties>
        ...
    </properties>

    <dependencies>
        ...
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/adjudication/mapper/BusinessAddendumItemDBOMapper.java</exclude>
                        <exclude>**/adjudication/mapper/ContactInfoDBOMapper.java</exclude>
                        <exclude>**/adjudication/mapper/IncomeDBOMapper.java</exclude>
                        <exclude>**/adjudication/mapper/IncomeItemDBOMapper.java</exclude>
                        <exclude>**/adjudication/mapper/InternationalAddressDBOMapper.java</exclude>
                        <exclude>**/adjudication/mapper/ReferralSourceDBOMapper.java</exclude>
                        <exclude>**/adjudication/interceptor/*.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
        <sourceDirectory>${project.basedir}/src/net/ccapsws/ds/adjudication</sourceDirectory>
    </build>
</project>

Последняя строка для исключения - это то место, где возникает ошибка при компиляции:

[ERROR] \Maven Convertion\CCAPSAdjudication\DataSource.CCAPS.Impl\src\net\gc\ccapsws\ds\adjudication\interceptor\CCAPSDTOAuditInterceptor.java:[8,46] error: package net.ccapsws.validation.dictionary does not exist

Дело в том, что я пробовал с объявлением exclude, но поскольку путь src является пользовательским (например, ${project.basedir}/src/net/ccapsws/ds/adjudicationm является путем src), я подозреваю, что maven не распознает путь? Кто-нибудь может помочь с этим?

Обратите внимание, что я не прошу файлы ресурсов, я хочу скомпилировать файлы внутри папки src, но также хочу исключить определенные java-файлы во время компиляции.

РЕДАКТИРОВАТЬ: есть еще один проект, ссылающийся на этот проект, но в родительском POM я помещаю этот проект после этого проекта в последовательность реакторов, поэтому я не думаю, что где-либо еще ссылается на этот проект.


person Paul    schedule 17.01.2017    source источник
comment
означает ли это, что вы хотите скомпилировать только файлы в /src/net/ccapsws/ds/adjudication и исключить все остальное   -  person ravthiru    schedule 18.01.2017
comment
@ravthiru Да и нет. Я хочу скомпилировать файлы в src/...../adjudication, но хочу исключить файлы из тегов exclude в моем POM, особенно /adjudication/interceptor/*.java, где он все еще пытается скомпилироваться.   -  person Paul    schedule 18.01.2017
comment
Если исключенные пакеты используются в других пакетах (которые не исключены), то даже исключенные пакеты компилируются из-за зависимости.   -  person ravthiru    schedule 18.01.2017
comment
Если звук, вы должны переместить тот код, который вы хотите исключить, в отдельный модуль...   -  person khmarbaise    schedule 18.01.2017
comment
@ravthiru: я проверил весь рабочий набор, ни один из других кодов/проектов/пакетов не ссылается на конкретную папку, однако у меня есть родительский POM, определяющий плагин компиляции maven, но ничего не объявляющий для исключения, в этом причина?   -  person Paul    schedule 18.01.2017
comment
@khmarbaise Не понимаю, что вы имели в виду, теперь это пакет внутри проекта, но я не определяю пакеты в POM.   -  person Paul    schedule 18.01.2017


Ответы (1)


Проблема пути похожа на проблему, на которую отвечают эти ссылки: https://stackoverflow.com/a/25262893/4055837 и https://stackoverflow.com/a/39450549/4055837

person Sean    schedule 17.01.2017
comment
Спасибо, но, как я уже сказал, исключение ресурсов не поможет, так как я хочу скомпилировать весь проект без этого конкретного java-файла. Тег ресурса только копирует файлы. - person Paul; 18.01.2017
comment
Я заметил это, поэтому я отредактировал два «ответа» на аналогичный вопрос, касающийся путей. Возможно, ваше задание сборки ищет судебное решение/решение об исключении (я столкнулся с этим с заданиями Jenkins). - person Sean; 18.01.2017
comment
Отметив это как ответ, однако сам ответ не помогает, помогли 2 ссылки ниже кода, опубликованного @Sean. На самом деле это проблема пути: я уже упоминал пользовательский путь сборки, все, что мне нужно добавить, это конечный путь, в моем случае это **/interceptor/.java. Спасибо, Шон. Еще одна вещь, я думаю, если у вас есть родительский POM, устанавливающий плагин компиляции, убедитесь, что в теге конфигурации в вашем дочернем теге указано Combine.self=override. - person Paul; 18.01.2017
comment
Кроме того, не уверен, что это на самом деле проблема: где-то еще я видел сообщение о том, что maven испытывает трудности с включением и исключением, я попытался снизить плагин maven-compiler-plugin до 2.1, как указано в теме: stackoverflow.com/a/11081252 - person Paul; 18.01.2017
comment
Я уберу ответ, чтобы отразить, где была реальная помощь. Ваше здоровье! - person Sean; 20.01.2017