2015-04-10 6 views
1

моя структура проекта выглядит следующим образомMaven профиля с различными файлами конфигурации

-src/main/java 
-src/main/resources 
-dev 
    -app.properties 
-prod 
    -app.properties 
-sandbox 
    -app.properties 

и I определили Maven профили как этот

<profiles> 
    <profile> 
     <id>dev</id> 
     <properties> 
     <build.profile>dev</build.profile> 
     </properties> 
     <build> 
     <resources> 
      <resource> 
      <directory>src/main/resources/dev</directory> 
      </resource> 
     </resources> 
     </build> 
    </profile> 
    <profile> 
     <id>prod</id> 
     <properties> 
     <build.profile>prod</build.profile> 
     </properties> 
     <build> 
     <resources> 
      <resource> 
      <directory>src/main/resources/prod</directory> 
      </resource> 
     </resources> 
     </build> 
    </profile> 
    <profile> 
     <id>sandbox</id> 
     <properties> 
     <build.profile>sandbox</build.profile> 
     </properties> 
     <build> 
     <resources> 
      <resource> 
      <directory>src/main/resources/sandbox</directory> 
      </resource> 
     </resources> 
     </build> 
    </profile> 
    </profiles> 

, что я пытаюсь сделать это для копирования права собственности из правой подпапки, когда я вызвал правильный профиль, например mvn -pdev install. будет препятствовать Maven-копирование app.properties файл из/Dev папку SRC/главная/ресурс затем поместить в банку я в здании

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

+dev 
    +prod 
    +sandbox 
    +META-INF 
    +com 
    -app.properties 

проблема заключается в 5 папках с одним файлом свойств, я не хочу, чтобы выделили файлы песочницы dev prod.

+0

Вы хотите, чтобы этот файл находился в корне вашей фляги или в подпапке dev/prod/sandbox? –

+0

Что вы имеете в виду с другими подпапками? У вас есть папки dev, prod, sandbox в JAR или вложенные папки в папке для профиля? Не могли бы вы разместить образец, как выглядит ваш JAR? – dunni

+0

@SergeyPauk в корне –

ответ

0

dunni будет работать, но я сделал так

  1. Поставив вложенные папки в папку под названием SRC/основные/профили, если вы используете затмение, важно, чтобы добавить эту папку в качестве «исходной папки ». поэтому проект выглядит как этот

    -src/основной/ресурс

    -Src/основные/профили

    -prod 
    -dev 
    -ist 
    

Примечание: вы можете положить что-нибудь, где есть общее и никогда не меняется крест все профили в папку ресурсов и т. д. log4j.properties затем помещают соответствующие профили в каждую подпапки соответственно.

и секция окончательного профиля выглядит следующим образом

<profiles> 
    <profile> 
     <id>dev</id> 
     <properties> 
     <build.profile>dev</build.profile> 
     </properties> 
     <build> 
     <resources> 
      <resource> 
      <directory>src/main/profiles/dev</directory> 
      </resource> 
     </resources> 
     </build> 
    </profile> 
    <profile> 
     <id>prod</id> 
     <properties> 
     <build.profile>prod</build.profile> 
     </properties> 
     <build> 
     <resources> 
      <resource> 
      <directory>src/main/profiles/prod</directory> 
      </resource> 
     </resources> 
     </build> 
    </profile> 
    <profile> 
     <id>sandbox</id> 
     <properties> 
     <build.profile>sandbox</build.profile> 
     </properties> 
     <build> 
     <resources> 
      <resource> 
      <directory>src/main/profiles/sandbox</directory> 
      </resource> 
     </resources> 
     </build> 
    </profile> 
    </profiles> 

поэтому я сделал так, потому что Maven по умолчанию пытается скопировать все содержимое папки/ресурсов в банку.

но используя плагин jar Я могу получить то, что хочу, но я стараюсь, чтобы мой pom прост.

Основная проблема, с которой я столкнулся, - Как исключить файлы из папки/resource.прокомментируйте, если кто-нибудь знает лучший способ сделать это

1

Возможно, у вас есть плагин, который не учитывает записи ресурсов в разделе сборки и использует src/main/resources как папку ресурсов. В этом случае я бы изменил структуру папок следующим образом:

src 
- main 
    - resources-dev 
    - resources-prod 
    - resources-sandbox 

и изменить имена папок в разделах сборки. Таким образом, вы не вмешиваетесь в стандартную структуру папок maven. Ответ

+0

это будет работать. но я предпочитаю помещать все подпапки в одну папку, например src/main/profiles –

+0

Конечно, это также возможно. Просто не используйте стандартную папку src/main/resources. – dunni

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