2016-01-23 2 views
1

Я хотел бы настроить файлы свойств в зависимости от профиля, либо dev, либо prod, однако расположение свойств файл неправильно сконструирован. Я нашел ответы на подобные вопросы по SO, но ни один из этих ответов не помог решить эту проблему.Ошибка загрузки файла свойства (плагины: maven-war-plugin: 2.4: war: default-war: package)

ошибка я получаю следующим образом:

Ошибка при загрузке файла свойство 'E: \ \ развития CodeSource \ GitHub \ MyProject \ Profiles \ DEV \ mongo.properties' (org.apache.maven.plugins : Maven войны-плагин: 2,4: война: по умолчанию войны: пакет)

фактическое местоположение файла свойств:

E:\Development\CodeSource\GitHub\myproject\src\main\resources\profiles\dev\mongo.properties 

так что я установить местоположение ресурсов следующим образом:

<resources> 
    <resource> 
     <filtering>true</filtering> 
     <directory>src/main/resources</directory> 
    </resource> 
</resources> 

Тем не менее он по-прежнему не находит файл свойств.

Вот весь ПОМ файл:

<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>abc.myproject</groupId> 
<artifactId>myartifact</artifactId> 
<packaging>war</packaging> 
<version>0.1.0-SNAPSHOT</version> 

<name>projectname</name> 
<description>Site Description</description> 
<url>http://www.myproject.abc</url> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <maven.compiler.source>1.8</maven.compiler.source> 
    <maven.compiler.target>1.8</maven.compiler.target> 
    <failOnMissingWebXml>false</failOnMissingWebXml> 
    <maven-war-plugin.version>2.4</maven-war-plugin.version> 
    <tomcat-deploy-path>output</tomcat-deploy-path> 
</properties> 

<dependencies> 
    // various dependencies 
</dependencies> 

<build> 
    <finalName>v${project.artifactId}#${project.version}</finalName> 
    <filters> 
     <filter>profiles/${build.profile.id}/mongo.properties</filter> 
    </filters> 
    <resources> 
     <resource> 
      <filtering>true</filtering> 
      <directory>src/main/resources</directory> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>${maven-war-plugin.version}</version> 
      <configuration> 
       <outputDirectory>${tomcat-deploy-path}</outputDirectory> 
       <failOnMissingWebXml>true</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.0</version> 
      <configuration> 
       <source>${maven.compiler.source}</source> 
       <target>${maven.compiler.target}</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 


<profiles> 
    <profile> 
     <id>dev</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
      <build.profile.id>dev</build.profile.id> 
     </properties> 
    </profile> 
    <profile> 
     <id>prod</id> 
     <properties> 
      <build.profile.id>prod</build.profile.id> 
     </properties> 
    </profile> 
</profiles> 

</project> 

Я использую Eclipse.

ответ

1

Путь к файлам фильтров - relative to the project root, not to src/main/resources. Таким образом, вам необходимо настроить его так:

<filters> 
    <filter>src/main/resources/profiles/${build.profile.id}/mongo.properties</filter> 
</filters> 
+0

Спасибо @Tunaki. Теперь исправлено. Однако мне любопытно, почему фильтрация каталогов ресурсов не использовалась в качестве базы для местоположения профиля. Я нашел примеры, которые, похоже, используют его таким образом. – Alex

+0

@Alex Хм, это было бы странно. У вас есть ссылка на эти примеры? Я не вижу, как это может сработать. – Tunaki

+0

Вот статья, которую я последовал: http://www.petrikainulainen.net/programming/tips-and-tricks/creating-profile-specific-configuration-files-with-maven/, также в этом примере показано, как владельцы мест заменяется значениями в зависимости от выполненного профиля. Это тоже не работает. – Alex

Смежные вопросы