Maven - исключить папку из сборки

Пытаюсь исключить папку src/main/resources/scripts/ из моей сборки, но следующее не работает:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>src/main/resources/scripts/</exclude>
            </excludes>
        </resource>
    </resources>

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <excludes>
                    <exclude>src/main/resources/scripts/</exclude>
                </excludes>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Любые идеи?


person Cheetah    schedule 12.08.2014    source источник


Ответы (4)


Вместо этого попробуйте:

<exclude>scripts/**</exclude>

Исключение основано на каталоге, поэтому ваша конструкция исключает

src/main/resources/src/main/resources/scripts
person Robert Scholte    schedule 12.08.2014
comment
Спасибо за предложение, но, похоже, это не работает для меня. - person Cheetah; 12.08.2014
comment
Вы сначала сделали mvn clean? Кстати, это не влияет на плагин manven-compiler-plugin, который компилирует только файлы .java. Подключаемый модуль maven-resources отвечает за копирование этих файлов в путь к классам. - person Robert Scholte; 12.08.2014
comment
maven.apache.org/plugins/maven-resources- plugin / examples / дает вам подходящие примеры. ** соответствует только каталогам, в случае файлов я ожидал бы scripts/**/* - person Robert Scholte; 12.08.2014
comment
Опять без радости. Я делаю mvn clean, затем mvn compile. - person Cheetah; 12.08.2014
comment
выполните mvn clean process-resources -X и pastebin.com результаты? - person Robert Scholte; 12.08.2014
comment
Вы подумаете, что я идиот ... Я смотрел совсем не на тот проект ... ваше предложение работает. Спасибо - person Cheetah; 13.08.2014

У меня была аналогичная проблема, и я обнаружил следующие проблемы:

  • У вас может быть родительский pom, который уже определяет конфигурацию для maven-compiler-plugin. Для этого добавьте combine.self="override" к тегу configuration. См. Maven: возможно ли это для переопределения конфигурации плагина, уже определенного для профиля в родительском POM
  • Кажется, плагин игнорирует исключаемые классы, если ему нужны исключенные классы для компиляции: убедитесь, что вы не ссылаетесь на исключенные классы из других классов, которые будут скомпилированы. Например, если вы исключите Foo.java, но в Bar.java вы import Foo; он (попытается) скомпилировать Foo.java для компиляции Bar.java.

Например:

<profiles>
    <profile>
        <id>myId</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration combine.self="override">
                        <excludes>
                            <exclude>**/some/full/directory/*</exclude>
                            <exclude>**/some/single/File.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
</profile>
person codemonkey    schedule 12.09.2016
comment
Исключение одного файла не работало у меня с версией 3.6.0 - person aliopi; 03.01.2017
comment
Это дает ошибку сборки в текущих версиях maven и плагина - person TheJeff; 27.06.2018

Это очень просто, и вам не нужно добавлять другой плагин:

https://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html.

        <build>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <excludes>
                        <exclude>application.properties</exclude>
                    </excludes>
                </resource>
            </resources>
        </build>
person Israel Perales    schedule 21.08.2020

person    schedule
comment
Прочитав вопросы с более чем 40 голосами, я наконец нашел рабочий (Кумар)! Спасибо ! - person Boris Borovski; 10.07.2020