Maven 编译找不到 src/main/resources 目录

Maven Compile cant find src/main/resources directory

我正在尝试使用 Maven 为我的项目设置集成测试环境,但是当我 运行 编译目标时出现以下错误。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources (default-resources) on project mavenintegrationtest: Error loading property file '/Users/xxx/dev/poc/java/mavenintegrationtest/profiles/dev/config.properties' -> [Help 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.Whosebug</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>

filter (link) 元素将解析您的文件并对它们应用内容过滤器。 profiles (link) 元素可帮助您为构建定义不同的环境。

所有这些都与您的资源有关。这些可以是配置文件或其他类型的文件。如果您进行过滤,则可以使用其他值更改此文件的内容 - 例如pom 属性。使用配置文件时,您可以为每个环境设置不同的替换属性。

您应该将配置文件在默认路径树中向上移动,或者在您的 pom 中为资源位置添加配置。 base dir 是包含您的 pom 的文件夹。你应该在这里有你的个人资料文件夹。

此外,here 是一些关于配置文件及其配置的有用信息。