Maven Compile не может найти каталог src / main / resources - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь настроить среду тестирования интеграции, используя Maven для моего проекта, но получаю приведенную ниже ошибку при запуске цели компиляции.

[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins: Maven-ресурсы-плагин: 3.0.2: ресурсы (default-resources) в проекте mavenintegrationtest: Ошибка загрузки файл свойств '/Users/xxx/dev/poc/java/mavenintegrationtest/profiles/dev/config.properties' -> [Помощь 1]

Ошибка, кажется, жалуется, что она не может найти файл config.properties в том месте, которое является правильным. По какой-то причине он удалил бит «src / main / resources» из пути к файлу.

Итак, правильный полный путь /Users/xxx/dev/poc/java/mavenintegrationtest/src/main/resources/profiles/dev/config.properties но по какой-то причине он удалил src / main / resources и так ищет, /Users/xxx/dev/poc/java/mavenintegrationtest/profiles/dev/config.properties Кто-нибудь знает, что является причиной этого?

Мой POM такой, как показано ниже, и я получаю эту ошибку, когда я раскомментирую следующий тег «filter»,

<filter>${basedir}/profiles/${build.profile.id}/config.properties</filter>

Я попытался удалить оператор $ {basedir} и все еще получаю ту же ошибку.

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.stackoverflow</groupId>
  <artifactId>mavenintegrationtest</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>mavenintegrationtest</name>
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <filters>
      <filter>${basedir}/profiles/${build.profile.id}/config.properties</filter>
    </filters>

    <resources>
      <resource>
        <filtering>true</filtering>
        <directory>${basedir}/src/main/resources</directory>
      </resource>
    </resources>

  </build>
  <!-- Profile configuration -->
  <profiles>
    <!-- The configuration of the development profile -->
    <profile>
      <id>dev</id>
      <!-- The development profile is active by default -->
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <build.profile.id>dev</build.profile.id>
      </properties>
    </profile>
    <!-- The configuration of the integration-test profile -->
    <profile>
      <id>integration-test</id>
      <properties>
        <build.profile.id>integration-test</build.profile.id>
      </properties>
    </profile>
  </profiles>

</project>

enter image description here

1 Ответ

1 голос
/ 05 апреля 2019

Элемент filter ( link ) будет анализировать ваши файлы и применять к ним фильтр содержимого.Элемент profiles ( link ) помогает определить различные среды для сборки.

Все это связано с вашими ресурсами.Это могут быть файлы конфигурации или файлы другого типа.Если вы фильтруете, вы можете изменить содержимое этих файлов с другими значениями - например, свойства pom.При использовании профилей у вас могут быть разные свойства замены для каждой среды.

Вы должны переместить профили вверх в дереве для пути по умолчанию или добавить конфигурацию в pom для расположения ресурса.base dir - это папка, в которой находится ваш пом.Здесь должна быть папка вашего профиля.

My own example

Также, здесь - это хорошая информация о профилях и их конфигурациях.

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