Сборка IntelliJ не может найти каталог ресурсов, сгенерированный Maven, и удаляет его - PullRequest
0 голосов
/ 26 апреля 2020

Я сталкиваюсь с очень странной ситуацией. Я использую подпакет в 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>


        <!--        &lt;!&ndash; https://mvnrepository.com/artifact/io.netty/netty-transport-native-epoll &ndash;&gt;-->
        <!--        <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):

targer directory after maven clean compile

Ниже приводится целевой каталог после сборки IntelliJ. См. config папка удалена aws папка все еще там с файлами в ней.

enter image description here

Что я пробовал

  • Я попытался удалить файлы .idea и .iml, сделать недействительным кеш, перестроить и добавить поддержку maven framework.
    • Перепробовал все решения, которые пользователи сталкивались с подобной проблемой, на форуме IntelliJ.

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

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