Я сталкиваюсь с очень странной ситуацией. Я использую подпакет в src/resources
для хранения различных видов ресурсов в разных каталогах, таких как src/resources/conf
для хранения файлов конфигурации, src/resources/aws
файл для хранения aws связанных файлов и соответственно использую их в коде, используя
getclass().getResourceLoader().getResource("/config/userConfig.yml").getFile()
Ранее, после того, как я реструктурировал свои файлы и код в соответствии с путем, я много боролся с ошибкой, следующей за выполнением (сборкой) моего кода с помощью зеленой стрелки IntelliJ для запуска приложения, а также для тестов
Error:Maven Resources Compiler: Failed to copy '/Users/codetalker/myproject/src/main/resources/config/userConfig.yml' to '/Users/codetalker/myproject/target/classes/config/userConfig.yml': /Users/codetalker/myproject/target/classes/config/userConfig.yml (Not a directory)
Error:Maven Resources Compiler: Failed to copy '/Users/codetalker/myproject/src/main/resources/config/defaultConfig.yml' to '/Users/codeTalker/myproject/target/classes/config/defaultConfig.yml': /Users/codetalker/myproject/target/classes/config/defaultConfig.yml (Not a directory)
Позже я выяснил, перейдя в целевой каталог, этот каталог не присутствовал в папке target
и, следовательно, ошибка была правильной, not a directory.
. Я запустил maven clean compile
, он создал каталог, а затем green arrow
собрал и успешно запустил мой файл. Я не был так счастлив никогда прежде. Все работало нормально, по крайней мере, последние 3 дня.
Сегодня произошло нечто чрезвычайно странное. Все работало нормально, и из ниоткуда я хотел запустить метод внутри исходного класса. Я выполнил следующие шаги в следующем порядке:
- Удалена
<scope>test</scope>
в Junit
зависимость в pom.xml
. - Аннотированный @Test для метода его запуска, IntelliJ попросил добавить пакет
jetBrains
, я точно не помню, я это разрешил. - Тогда этот метод не смог запуститься, и я хотел отменить все. Я переключился на
pom.xml
, обнаружил, что JetBrains
что-то зависимое, удалил это, раскомментировал <scope>test</scope>
в Junit и восстановил pom.xml
к предыдущей версии (чертовски уверен). - После этого, когда я перекомпилировал с maven и затем запустил тест в src / test / myFile.test, он снова начал показывать выше
Maven Resources Compiler error
для тех же файлов, что и раньше.
Проблема
Более странная вещь после запуска maven clean compile
, каталог и эти файлы уже присутствуют, но когда я запускаю (используя зеленую стрелку) или собираю (используя зеленый молот), он показывает ту же ошибку, несмотря на то, что этот каталог и файлы находятся там, и, кроме того, он удаляет этот каталог после выдачи этой ошибки. Кроме того, кроме папки config/
есть еще одна папка aws
с 7 файлами в ней, но она не выдает ошибку и не удаляется.
Что-то не так с конфигурацией Я чувствую, но Что я понятия не имею.
Ниже приводится содержимое pom.xml
-
<<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>4.12</junit.version>
<tinkerpop.version>3.4.4</tinkerpop.version>
<top.dir>${project.basedir}/..</top.dir>
<java.version>1.8</java.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<repositories>
<repository>
<id>io.spring.repo.maven.release</id>
<url>https://repo.spring.io/release/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<groupId>himanshu</groupId>
<artifactId>nubo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>nubo</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>27.1-jre</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-- <!– https://mvnrepository.com/artifact/io.netty/netty-transport-native-epoll –>-->
<!-- <dependency>-->
<!-- <groupId>io.netty</groupId>-->
<!-- <artifactId>netty-transport-native-epoll</artifactId>-->
<!-- <version>4.1.44.Final</version>-->
<!-- </dependency>-->
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
<version>4.7.1</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
<version>1.4.199</version>
</dependency>
<!--________________________________________________________________________________________________________________________________-->
<!-- AWS DEPENDENCIES-->
<!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk -->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.741</version>
</dependency>
<!--________________________________________________________________________________________________________________________________________________________-->
<!-- AZURE DEPENDENCIES-->
<!-- https://mvnrepository.com/artifact/com.azure/azure-client-sdk-parent -->
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-client-sdk-parent</artifactId>
<version>1.7.0</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
<version>12.0.0</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure</artifactId>
<version>1.1.0</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-mgmt-compute</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-mgmt-resources</artifactId>
<version>1.1.0</version>
<exclusions>
<exclusion>
<artifactId>slf4j-simple</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-mgmt-network</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>1.13.0</version>
</dependency>
<dependency>
<groupId>com.nimbusds</groupId>
<artifactId>nimbus-jose-jwt</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>net.minidev</groupId>
<artifactId>json-smart</artifactId>
<version>1.0.6.3</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.5</version>
</dependency>
<!-- ___________________________________________________________________________________________________________________________________-->
<!-- SPRING BOOT WEB DEPENDENCIES-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-web-services</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-webflux</artifactId>-->
<!-- <version>2.2.5.RELEASE</version>-->
<!-- </dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-devtools</artifactId>-->
<!-- <scope>runtime</scope>-->
<!-- </dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<artifactId>jul-to-slf4j</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.javaconfig</groupId>
<artifactId>spring-javaconfig</artifactId>
<version>1.0.0.m3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-maven-plugin -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>src/main/resources/aws</directory>
<targetPath>${project.build.outputDirectory}/aws</targetPath>
</resource>
<resource>
<directory>src/main/resources/config</directory>
<targetPath>${project.build.outputDirectory}/config</targetPath>
</resource>
<resource>
<directory>${env.HOME}/.aws/</directory>
</resource>
<resource>
<directory>${env.HOME}/.azure/</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- <plugin>-->
<!-- <groupId>org.xolstice.maven.plugins</groupId>-->
<!-- <artifactId>protobuf-maven-plugin</artifactId>-->
<!-- <version>0.6.1</version>-->
<!-- <configuration>-->
<!-- <protocArtifact>-->
<!-- com.google.protobuf:protoc:3.3.0:exe:${os.detected.classifier}-->
<!-- </protocArtifact>-->
<!-- <pluginId>grpc-java</pluginId>-->
<!-- <pluginArtifact>-->
<!-- io.grpc:protoc-gen-grpc-java:1.4.0:exe:${os.detected.classifier}-->
<!-- </pluginArtifact>-->
<!-- <protoSourceRoot>${basedir}/src/main/resources/proto</protoSourceRoot>-->
<!-- </configuration>-->
<!-- <executions>-->
<!-- <execution>-->
<!-- <goals>-->
<!-- <goal>compile</goal>-->
<!-- <goal>compile-custom</goal>-->
<!-- </goals>-->
<!-- </execution>-->
<!-- </executions>-->
<!-- </plugin>-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.amazonaws.samples.S3Sample</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>4.7.1</version>
<configuration>
<listener>true</listener>
<visitor>true</visitor>
<sourceDirectory>${basedir}/src</sourceDirectory>
<outputDirectory>${project.build.directory}/generated-sources/antlr4/
</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>antlr4</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Ниже приводится целевой каталог после сборки maven (обратите внимание на каталог config
):
Ниже приводится целевой каталог после сборки IntelliJ. См. config
папка удалена aws папка все еще там с файлами в ней.
Что я пробовал
- Я попытался удалить файлы .idea и .iml, сделать недействительным кеш, перестроить и добавить поддержку maven framework.
- Перепробовал все решения, которые пользователи сталкивались с подобной проблемой, на форуме IntelliJ.
Простите за такой длинный вопрос, я хотел передать, как я запутался и что я не первый раз сталкиваюсь с этой ошибкой, и как раньше я ее исправил.