Maven: не удалось выполнить цель org.apache.maven.plugins:maven-resources-plugin:2.7:resources
Я строю свой проект с использованием Maven. Моя версия maven - apache-maven-3.0.4. Я использую Eclipse Luna. Когда я пытаюсь построить свой проект, я получаю следующую ошибку
[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins:maven-resources-plugin:2.7: ресурсы (default-resources) в проекте OrionCommunity: пометить недействительным -> [Help 1].
Ниже приведена трассировка стека при запуске mvn clean install -X
:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:53.295s
[INFO] Finished at: Thu Oct 09 20:00:26 IST 2014
[INFO] Final Memory: 9M/25M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.7:resources (default-resources) on project OrionCommunity: Mark invalid -> [Hel
p 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.7:resources (default-resources)
on project OrionCommunity: Mark invalid
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: Mark invalid
at org.apache.maven.plugin.resources.ResourcesMojo.execute(ResourcesMojo.java:306)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: org.apache.maven.shared.filtering.MavenFilteringException: Mark invalid
at org.apache.maven.shared.filtering.DefaultMavenFileFilter.copyFile(DefaultMavenFileFilter.java:129)
at org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering.filterResources(DefaultMavenResourcesFiltering.java:264)
at org.apache.maven.plugin.resources.ResourcesMojo.execute(ResourcesMojo.java:300)
... 21 more
Caused by: java.io.IOException: Mark invalid
at java.io.BufferedReader.reset(BufferedReader.java:485)
at org.apache.maven.shared.filtering.MultiDelimiterInterpolatorFilterReaderLineEnding.read(MultiDelimiterInterpolatorFilterReaderLineEnding.java:416)
at org.apache.maven.shared.filtering.MultiDelimiterInterpolatorFilterReaderLineEnding.read(MultiDelimiterInterpolatorFilterReaderLineEnding.java:205)
at java.io.Reader.read(Reader.java:123)
at org.apache.maven.shared.utils.io.IOUtil.copy(IOUtil.java:181)
at org.apache.maven.shared.utils.io.IOUtil.copy(IOUtil.java:168)
at org.apache.maven.shared.utils.io.FileUtils.copyFile(FileUtils.java:1856)
at org.apache.maven.shared.utils.io.FileUtils.copyFile(FileUtils.java:1804)
at org.apache.maven.shared.filtering.DefaultMavenFileFilter.copyFile(DefaultMavenFileFilter.java:114)
... 23 more
Мой репозиторий maven находится под D:/mavenrepo. Я полностью удалил все банки, присутствующие в репо, и сделал чистую установку. Но я все еще получаю эту ошибку.
13 ответов
С:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
</plugin>
Получал следующее исключение:
...
Caused by: org.apache.maven.plugin.MojoExecutionException: Mark invalid
at org.apache.maven.plugin.resources.ResourcesMojo.execute(ResourcesMojo.java:306)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 25 more
Caused by: org.apache.maven.shared.filtering.MavenFilteringException: Mark invalid
at org.apache.maven.shared.filtering.DefaultMavenFileFilter.copyFile(DefaultMavenFileFilter.java:129)
at org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering.filterResources(DefaultMavenResourcesFiltering.java:264)
at org.apache.maven.plugin.resources.ResourcesMojo.execute(ResourcesMojo.java:300)
... 27 more
Caused by: java.io.IOException: Mark invalid
at java.io.BufferedReader.reset(BufferedReader.java:505)
at org.apache.maven.shared.filtering.MultiDelimiterInterpolatorFilterReaderLineEnding.read(MultiDelimiterInterpolatorFilterReaderLineEnding.java:416)
at org.apache.maven.shared.filtering.MultiDelimiterInterpolatorFilterReaderLineEnding.read(MultiDelimiterInterpolatorFilterReaderLineEnding.java:205)
at java.io.Reader.read(Reader.java:140)
at org.apache.maven.shared.utils.io.IOUtil.copy(IOUtil.java:181)
at org.apache.maven.shared.utils.io.IOUtil.copy(IOUtil.java:168)
at org.apache.maven.shared.utils.io.FileUtils.copyFile(FileUtils.java:1856)
at org.apache.maven.shared.utils.io.FileUtils.copyFile(FileUtils.java:1804)
at org.apache.maven.shared.filtering.DefaultMavenFileFilter.copyFile(DefaultMavenFileFilter.java:114)
... 29 more
Затем он исчез после добавления maven-filtering 1.3:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-filtering</artifactId>
<version>1.3</version>
</dependency>
</dependencies>
</plugin>
У меня тоже была эта проблема, потому что я фильтровал /src/main/resources и забыл, что я добавил двоичный файл хранилища ключей (*.jks) в этот каталог.
Добавьте блок "ресурс" с исключениями для двоичных файлов, и ваша проблема может быть решена.
<build>
<finalName>somename</finalName>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>false</filtering>
</testResource>
</testResources>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>*.jks</exclude>
<exclude>*.png</exclude>
</excludes>
</resource>
</resources>
...
То, что сработало для меня, это добавить тег включения, чтобы точно указать, что я хочу фильтровать.
Похоже, что плагин ресурсов имеет проблемы с прохождением всей папки src/main/resource, возможно, из-за некоторых определенных файлов внутри.
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>application.yml</include>
</includes>
</resource>
</resources>
Я исправил ту же проблему, сославшись на последнюю версию плагина ресурсов maven:
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
</dependency>
Из официальной документации
Предупреждение: не фильтруйте файлы с бинарным содержимым, например изображения! Это, скорее всего, приведет к повреждению вывода.
Если у вас есть как текстовые, так и двоичные файлы в качестве ресурсов, рекомендуется иметь две отдельные папки. Одна папка src / main / resources (по умолчанию) для ресурсов, которые не фильтруются, и другая папка src / main / resources-Filter для ресурсов, которые фильтруются.
<project>
...
<build>
...
<resources>
<resource>
<directory>src/main/resources-filtered</directory>
<filtering>true</filtering>
</resource>
...
</resources>
...
</build>
...
</project>
Теперь вы можете поместить эти файлы в src / main / resources, которые не должны фильтроваться, а остальные файлы - в src / main / resources-Filter.
Как уже упоминалось, фильтрация двоичных файлов, таких как изображения, PDF и т. Д., Может привести к повреждению вывода. Чтобы предотвратить такие проблемы, вы можете настроить расширения файлов, которые не будут фильтроваться.
Скорее всего, в вашем каталоге есть файлы, которые нельзя отфильтровать. Таким образом, вы должны указать расширения, которые не были отфильтрованы.
В моем случае targetPath
не имел никакого значения, это было пустым в resources --> resource
для файла directory
с файлами, которые имели проблему. Я должен был обновить его до global
как видно из Code Sample 2
и перезапустите сборку, чтобы устранить проблему.
Пример кода 1 (с проблемой)
<build>
<resources>
<resource>
<directory>src/main/locale</directory>
<filtering>true</filtering>
<targetPath></targetPath>
<includes>
<include>*.xml</include>
<include>*.config</include>
<include>*.properties</include>
</includes>
</resource>
</resources>
Пример кода 2 (исправление применено)
<build>
<resources>
<resource>
<directory>src/main/locale</directory>
<filtering>true</filtering>
<targetPath>global</targetPath>
<includes>
<include>*.xml</include>
<include>*.config</include>
<include>*.properties</include>
</includes>
</resource>
</resources>
У меня была такая же ошибка из-за символа '@' в моих ресурсах /application.properties. Все, что я сделал, это заменил символ @ на его значение в Юникоде:
eureka.client.serviceUrl.defaultZone=http://discUser:discPassword\u0040localhost:8082/eureka/
и это работало как шарм. Я знаю, что '@' является совершенно допустимым символом в файлах.properties, и файл был в кодировке UTF-8, и это заставляет меня сомневаться в моей карьере до сегодняшнего дня, но стоит попробовать, если вы удалите содержимое своих файлов ресурсов, чтобы увидеть, если вы может пройти эту ошибку.
В моем случае это был конфликт с IntelliJ, я решил его, собрав проект из командной строки, и он заработал!
Я решил это, изменив формат кодирования файлов ресурсов на UTF-8
Я столкнулся с той же проблемой и сделал фильтрацию false, как показано ниже, для меня. Вы можете попробовать то же самое...
<testResources>
<testResource>
<directory>src/test/java</directory>
<filtering>false</filtering>
</testResource>
<testResource>
<directory>src/test/resources</directory>
<filtering>false</filtering>
</testResource>
</testResources>
Спасибо за все предложения. Я использую temurin-11.jdk и Spring-Boot 2.7.5. Я решил пойти по пути обновления плагина.
Моя исходная ошибка:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.7:resources
(default-resources) on project my-app: Mark invalid -> [Help 1]
После обновления моего pom следующим образом:
У меня есть этот бит ресурсов в моем разделе сборки:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
И тогда это мое определение плагина:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
Я получил новую ошибку:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.3.0:resources
(default-resources) on project my-app: filtering /Users/me/IntelliJ_Workspace/my-app/my-app/src/main/resources/static/fonts/glyphicons-halflings-regular.woff
to /Users/me/IntelliJ_Workspace/my-app/my-app/target/classes/static/fonts/glyphicons-halflings-regular.woff
failed with MalformedInputException: Input length = 1 -> [Help 1]
Как видите, расширение файла .woff содержит как минимум 1 соответствующий разделитель, но не может быть проанализировано. В моем случае я не хочу фильтровать ничего, кроме.properties
&.yaml
файлы. Прочитав
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
<nonFilteredFileExtensions>jpg,jpeg,gif,bmp,png,svg,ttf,woff,woff2</nonFilteredFileExtensions>
</configuration>
</plugin>