2016-12-13 2 views
0

У меня есть банка, что профиль различных платформ. Различия (включая разные зависимости и другую версию для зависимости) обрабатываются с использованием профиля.Как плоский профиль maven?

<profiles> 
    <profile> 
     <id>PlatformA</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <dependencies> 
      <dependency> 
       <groupId>commons-lang</groupId> 
       <artifactId>commons-lang</artifactId> 
       <version>2.5</version> 
      </dependency> 
     </dependencies> 
    </profile> 
</profiles> 
<profiles> 
    <profile> 
     <id>PlatformB</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <dependencies> 
      <dependency> 
       <groupId>commons-lang</groupId> 
       <artifactId>commons-lang</artifactId> 
       <version>2.6</version> 
      </dependency> 
     </dependencies> 
    </profile> 
</profiles> 

Теперь проблема заключается в том, что когда я строю платформу A, установленная поместья не изменяется. Это означает, что когда банку используется услуга, необходимо активировать профиль PlatformA (или PlatformB) с использованием -PPlatformA. В противном случае зависимость не будет обрабатываться.

Итак, есть ли способ разместить плоский профиль в помпе и установить плоский пот? Это означает, что при использовании -PPlatformA для сборки флага, у установленного помпа не будет никакого профиля, просто объедините содержимое PlatformA в pom.

ответ

0

AFAIK нет возможности «скрывать» настройки профиля.

Но вы можете сократить свои профили, когда вы используете свойство для определения версии зависимости, вместо определения зависимости:

<profiles> 
    <profile> 
     <id>PlatformA</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <commons-lang.version>2.5</commons-lang.version> 
    </profile> 
    <profile> 
     <id>PlatformA</id> 
     <activation> 
      <activeByDefault>false</activeByDefault> 
     </activation> 
     <commons-lang.version>2.6</commons-lang.version> 
    </profile> 
</profiles> 

<dependencies> 
     <dependency> 
      <groupId>commons-lang</groupId> 
      <artifactId>commons-lang</artifactId> 
      <version>${commons-lang.version}</version> 
     </dependency> 
</dependencies> 

А есть плагин, который помогает строительные артефактам для разных платформ без использования профилей. Посмотрите на building for multiple environments.

+0

Проблема заключается в том, что, когда служба использует банку, службе необходимо добавить часть профиля в командной строке mvn для активации правильного профиля. – DeepNightTwo

+0

Я не понимаю, что вы имеете в виду. Является ли сборка флага во время выполнения (режим производства) «службы»? Что такое «услуга»? – JimHawkins

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